underscorejs-some学习
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学习的更多相关文章
- 不学就吃亏的underscorejs类库学习示例 ——(集合篇)
underscorejs是一个很不错的类库,我的很多项目都引用了这个类库,的确可以带来很多方便. 记得我当初学的时候,看underscorejs的api是看的一知半解的,甚至不明白api里的conte ...
- Backbone学习笔记一Backbone中的MVC
原文章地址http://bigdots.github.io/2015/12/01/Backbone学习笔记(一)/#more Backbone.js为复杂WEB应用程序提供模型(models).集合( ...
- APPCAN学习笔记004---AppCan与Hybrid,appcan概述
APPCAN学习笔记004---AppCan与Hybrid,appcan概述 技术qq交流群:JavaDream:251572072 本节讲了appcan的开发流程,和开发工具 笔记不做具体介绍了,以 ...
- Angularjs学习笔记《一》
开始慢慢的学习新的框架,Angularjs,其中原理不知深浅,但有例子练习,慢慢熟知.看的英文文档一点点翻译学习. 第一个例子,写一个增加,选中,删除的例子, 首先要引进所用的框架源码,这样引进,下面 ...
- Backbone学习笔记 - View篇
Backbone是一种Web端的MVC框架,这里纪录学习Model,View和Collection的笔记. 1 View initialize构造函数 Backbone.View 与jQuery库紧密 ...
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
随机推荐
- 【gm】
gm : GraphicsMagick for node.js aheckmann/gm imgAreaSelect 图片剪裁 apt-get install imagemagick 执行conver ...
- 未在本地计算机上注册"MSDAORA.1"提供程序
1.在客户机器上部署数据库的时候老是报这个异常. 分析:因为用的是OleDB这个万能驱动, 连接字符串 Provider=MSDAORA.1;Password=CCIM;User ID=CCIM;Da ...
- oracle 表的管理(数据类型,表创建删除,数据CRUD 操作)
表名和列的命名规则
- Delphi 客户端调用Webservice 的TClientdataset 报出“http://www.borland.com/namespaces/Types-IAppServerSOAP”
http://www.borland.com/namespaces/Types-IAppServerSOAP 服务器未能识别 HTTP 头 SOAPAction 的值 (2011-04-25 16:4 ...
- 《University Calculus》-chape4-导数的应用-微分中值定理
罗尔定理:如果函数f(x)在[a,b]上连续并且在(a,b)处处可微,并且有f(a) = f(b),则我们必然何以找到一个c∈(a,b),使得f’(c) = 0. 证明:我们从函数f(x)的最大值和最 ...
- Java常见面试题总结
一.Java基础 1.String类为什么是final的. 2.HashMap的源码,实现原理,底层结构. 3.说说你知道的几个Java集合类:list.set.queue.map实现类咯... 4. ...
- 10款AJAX/CSS/HTML的在线表单生成器
本文转载:http://www.oschina.net/news/24327/10-ajax-css-html-online-form-builder 在这篇文章中,我们将介绍10个超棒的在线表单生成 ...
- C primer plus 读书笔记第十一章
本章标题是字符串和字符串函数.主要是了解和字符串有关的函数. 1.字符串表示和字符串I/O 主要内容:字符串常量和字符串数组的初始化,对比了指针和字符串. 其中要注意的是,数组初始化是从静态存储区把一 ...
- [PWA] 18. Clean the photo cache
We cannot let photo always keep caching new data without clean the old data. If message is not displ ...
- iOS 启动连续闪退保护方案
引言 “如果某个实体表现出以下任何一种特性,它就具备自主性:自我修复.自我保护.自我维护.对目标的自我控制.自我改进.” —— 凯文·凯利 iOS App 有时可能遇到启动必 crash 的绝境:每次 ...