2.11 some

2.11.1 语法:

_.some(list, predicate, [context])

2.11.2 说明:

对list集合的每个成员根据predicate进行真值检测,如果一个通过真值检测则返回true(匹配成功则立即返回)

  • list可以为数组,对象,字符串和arguments
  • predicate会传第三个参数value, key, list(参数名可自定义)
  • predicate函数需要返回值(否则直接返回false)
  • context可以改变predicate函数内部的this

2.11.3 代码示例:

示例一:some对数组,对象,字符串,arguments与predicate进行真值检,如果包含一个通过真值检测则返回true

var result;
// 操作数组
result = _.some([0, 1, 3], function (value) {
return value % 2 === 0;
});
console.log(result) //=> true // 操作对象
result = _.some({ one: 1, two: 2, three: 3, four: false }, function (value) {
return typeof value === 'string';
});
console.log(result); //=> false // 操作字符串(此处将字符拆分为数组)
result = _.some('123', function (value) {
return value !== '2' ? true : false;
});
console.log(result) //=> true //操作arguments
function abc() {
result = _.some(arguments, function (value) {
return value % 2 === 0;
});
console.log(result); //=> false
}
abc(1, 3, 5);

示例二:predicate会传递三个参数(value, key, list);函数内部需要return返回,否则直接返回false;

// predicate为不传值(且list集合属性值包含真值返回true,否则返回false)
var result;
result = _.some([1, 2, 3]);
console.log(result); //=> true //数组的情况
result = _.some([1, 2, 3], function (value, key, list) {
console.log(value, key, list);
//=> 1 0 [1, 2, 3]
//=> 2 1 [1, 2, 3]
//=> 3 2 [1, 2, 3]
return false;
}); //对象的情况
result = _.some({one: '一', two: '二', three: '三'}, function(value, key, list){
console.log(value, key, list);
//=> 一 one Object {one: "一", two: "二", three: "三"}
//=> 二 two Object {one: "一", two: "二", three: "三"}
//=> 三 three Object {one: "一", two: "二", three: "三"}
return false;
});

示例三:context可以改变predicate内部的this

var result;

// 数组的情况
result = _.some([1, 2, 3], function (value, key, list) {
console.log(this); //=> [1, 2, 3] this是数组
}, [1, 2, 3]); // 对象的情况
result = _.some([1, 2, 3], function (value, key, list) {
console.log(this); //=> Object {no: 10} this是对象
}, { "no": 10 }); // 字符串的情况
result = _.some([1, 2, 3], function (value, key, list) {
console.log(this); //=> String {0: "1", 1: "2", 2: "3", length: 3, [[PrimitiveValue]]: "123"} this是将字符串拆分后的对象
}, "123");

2.11.4 _.some的功能和_.any是一样的

var result = _.all([1, 2, 3], function (value, key, list){
return value > 2;
});
console.log(result) //=> true

2.11.5 特殊情况

示例一:list的特殊情况(数组,object对象,字符串之外的值),会返回什么呢?

var result = _.some(null);
console.log(result) //=> false 直接返回不做任何操作

示例二:predicate函数的this为window全局对象的情况

// 例如:null,undefined,window,this等
var result = _.every([1, 2, 3], function (value, key, list) {
console.log(this); //=> this是window全局对象
return true;
}, null);
console.log(result) //=> true

2.11.6 predicate还有其他写法?

示例一:predicate参数为一个字符的时候

var result = _.every([{ x: 1 }, { y: 1 }], 'x');
console.log(result) //=> true 会检测key是否包含x

示例二:predicate参数为对象的时候

var obj = [
{ x: 1, y: 2 },
{ x: 1 },
{ y: 1, z: 3 }
]
var result = _.every(obj, { x: 1 });
console.log(result) //=> true

示例三:predicate为现有的方法(这里只列出部分例子)

// _.identity方法
var result = _.some([false, 0], _.identity);
console.log(result) //=> false // _.isNumber方法
var result = _.some([1, 2, 3], _.isNumber);
console.log(result) //=> true // _.isObject方法
var obj = [
{ x: 1, y: 2 },
{ x: 1 },
{ x: 1, z: 3 }
]
var result = _.some(obj, _.isObject);
console.log(result) //=> true

gitbook地址:https://www.gitbook.com/book/niec-fe/underscorejs/details

underscorejs-some学习的更多相关文章

  1. 不学就吃亏的underscorejs类库学习示例 ——(集合篇)

    underscorejs是一个很不错的类库,我的很多项目都引用了这个类库,的确可以带来很多方便. 记得我当初学的时候,看underscorejs的api是看的一知半解的,甚至不明白api里的conte ...

  2. Backbone学习笔记一Backbone中的MVC

    原文章地址http://bigdots.github.io/2015/12/01/Backbone学习笔记(一)/#more Backbone.js为复杂WEB应用程序提供模型(models).集合( ...

  3. APPCAN学习笔记004---AppCan与Hybrid,appcan概述

    APPCAN学习笔记004---AppCan与Hybrid,appcan概述 技术qq交流群:JavaDream:251572072 本节讲了appcan的开发流程,和开发工具 笔记不做具体介绍了,以 ...

  4. Angularjs学习笔记《一》

    开始慢慢的学习新的框架,Angularjs,其中原理不知深浅,但有例子练习,慢慢熟知.看的英文文档一点点翻译学习. 第一个例子,写一个增加,选中,删除的例子, 首先要引进所用的框架源码,这样引进,下面 ...

  5. Backbone学习笔记 - View篇

    Backbone是一种Web端的MVC框架,这里纪录学习Model,View和Collection的笔记. 1 View initialize构造函数 Backbone.View 与jQuery库紧密 ...

  6. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  7. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  8. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  9. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  10. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. jquery禁用右键、文本选择功能、刷新

    //禁用右键.文本选择功能.刷新 $(document).bind(“contextmenu”,function(){return false;}); $(document).bind(“select ...

  2. UVALive4513 Stammering Aliens(哈希法,后缀数组)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=12580 [思路] 求出现次数不小于k次的最长可重叠子串和最后的出现 ...

  3. the identity used to sign the executable is no longer valid.解决方法

    the identity used to sign the executable is no longer valid.解决方法 一.重新下载Provisioning Profile 1.到devel ...

  4. centos安装GO

    1,下载 go1.5.1.linux-amd64.tar.gz 2,将go解压到/opt,个人喜好罢了[root@localhost ~]# tar -C /opt -xzf ./go1.5.1.li ...

  5. spring注解方式实现定时器,并且cron表达式中不识别L的方法

    1.Spring的配置: <beans xmlns:task="http://www.springframework.org/schema/task" xsi:schemaL ...

  6. 常用的Linux操作二

    1.sudo  说明:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行 . 2.who      说明 : 显示系统中有那些使用者正在上面,显示的资料包含 ...

  7. android蓝牙4.0(BLE)开发之ibeacon初步

    一个april beacon里携带的信息如下 ? 1 <code class=" hljs ">0201061AFF4C0002159069BDB88C11416BAC ...

  8. Java POI导入Excel文件

    今天在公司需要做个导入Excel文件的功能,所以研究了一下,参考网上的一些资料总算是做出来了,在此记录一下防止以后忘记怎么弄. 本人用的是poi3.8,所以需要的JAR包如下: poi-3.8.jar ...

  9. 用 Java 技术创建 RESTful Web 服务--转载

    简介 JAX-RS (JSR-311) 是为 Java EE 环境下的 RESTful 服务能力提供的一种规范.它能提供对传统的基于 SOAP 的 Web 服务的一种可行替代. 在本文中,了解 JAX ...

  10. Preloading an Image with jQuery--reference

    Preloading images will make your application a bit faster by making it lightweight. It is very simpl ...