underscorejs-find学习
2.5 find
2.5.1 语法:
_.find(list, predicate, [context])
2.5.2 说明:
对list集合的每个成员依次进行匹配(根据predicate迭代函数检测),匹配成功则立即返回当前成员
- list可以为数组,对象,字符串和arguments
- predicate会传第三个参数value, key, list(参数名可自定义)
- predicate函数需要返回值
- context可以改变predicate函数内部的this
2.5.3 代码示例:
示例一:find对数组,对象,字符串,arguments进行操作并返回匹配成功的数据
var result;
// 操作数组
result = _.find([1, 2, 3], function (value) {
return value === 2;
});
console.log(result) //=> 2
// 操作对象
result = _.find({ one: '一', two: '二', three: '三' }, function (value) {
return value === '二';
});
console.log(result) //=> "二"
// 操作复杂的对象
var obj = {
levelA: {
level0: 'level0',
level1: 'level1'
},
levelB: '一',
levelC: 1
}
result = _.find(obj, function (value) {
return value.level0 === 'level0';
});
console.log(result) //=> Object {level0: "level0", level1: "level1"}
// 操作字符串(此处将字符拆分为数组)
result = _.find('123', function (value) {
return value === '2';
});
console.log(result) //=> "2"
//操作arguments
function abc() {
result = _.find(arguments, function (value) {
return value === 2;
});
console.log(result); //=> 2
}
abc(1, 2, 3);
示例二:predicate函数传递的参数(函数内部需要return返回值,否则返回undefined)
var result;
//数组的情况
result = _.find([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 true; // true为真值则直接返回第一个成员
});
//对象的情况
result = _.find({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 true; // true为真值则直接返回第一个成员
});
示例三:context可以改变predicate内部的this
var result;
// 数组的情况
result = _.find([1, 2, 3], function (value, key, list) {
console.log(this); //=> [1, 2, 3] this是数组
}, [1, 2, 3]);
// 对象的情况
result = _.find([1, 2, 3], function (value, key, list) {
console.log(this); //=> Object {no: 10} this是对象
}, { "no": 10 });
// 字符串的情况
result = _.find([1, 2, 3], function (value, key, list) {
console.log(this); //=> String {0: "1", 1: "2", 2: "3", length: 3, [[PrimitiveValue]]: "123"} this是将字符串拆分后的对象
}, "123");
2.5.4 _.detect的功能和_.find是一样的
var result = _.detect([1, 2, 3], function (value, key, list) {
return value === 2;
});
console.log(result) //=> 2
2.5.5 特殊情况
示例一:list的特殊情况
//例如:null,undefined,0,true,this等;
var result = _.find(null, function (value, key, list) {
return true;
});
console.log(result) //=> "undefined"
示例二:predicate函数的this为window全局对象的情况
// 例如:null,undefined,window,this等
var result = _.find([1, 2, 3], function (value, key, list) {
console.log(this); //=> this是window全局对象
}, null);
2.5.6 list参数可为真假值?
var result = _.find([false, 1, true, '1', 0, undefined, null]);
console.log(result) //=> [1]
2.5.7 predicate还有其他写法?
示例一:predicate参数为空的时候
var result = _.find({x: 1, y: 2});
console.log(result) //=> [1]
示例二:predicate参数为一个字符的时候
var result = _.find([{x: 1}, {y: 2}], 'x');
console.log(result) //=> [{x: 1}]
示例三:predicate参数为对象的时候
var obj = [
{x: 1, y: 2},
{x: 1},
{y: 2, z: 3}
]
var result = _.find(obj, {x: 1});
console.log(result) //=> [{x: 1, y: 2}]
gitbook地址:https://www.gitbook.com/book/niec-fe/underscorejs/details
underscorejs-find学习的更多相关文章
- 不学就吃亏的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的开发者 ...
随机推荐
- bzoj1978
朴素的算法是O(n2logn)观察这个算法,似乎很难在进行优化我们就要换一种思路考虑到一个数的约数总不是很多,穷举约数也是可以在O(sqrt(x))的时间内完成的并且注意到,能否继续往下选数,只在于最 ...
- POJ- 2104 hdu 2665 (区间第k小 可持久化线段树)
可持久化线段树 也叫函数式线段树也叫主席树,其主要思想是充分利用历史信息,共用空间 http://blog.sina.com.cn/s/blog_4a0c4e5d0101c8fr.html 这个博客总 ...
- Javascript面向对象编程(三):非构造函数的继承 by 阮一峰
今天是最后一个部分,介绍不使用构造函数实现"继承". 一.什么是"非构造函数"的继承? 比如,现在有一个对象,叫做"中国人". var Ch ...
- github上排名靠前的java项目之_storm
1.和hadoop的比较 Storm: 分布式实时计算,强调实时性,常用于实时性要求较高的地方 Hadoop:分布式批处理计算,强调批处理,常用于数据挖掘.分析 2.Hadoop是实现了mapre ...
- 【转】android JNI
原文网址:http://jinguo.iteye.com/blog/696185 Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码 ...
- 数据结构(线段树):CodeForces 85D Sum of Medians
D. Sum of Medians time limit per test 3 seconds memory limit per test 256 megabytes input standard i ...
- Chrome启动参数的配置问题的补充
一.当Chrome浏览器不支持本地AJAX请求时,会出现AJAX跨域问题,这时候我们就要配置相应的启动参数使得浏览器可以访问本地文件: 配置参数为:--allow-file-access-from-f ...
- poj 3084 最小割
题目链接:http://poj.org/problem?id=3084 本题主要在构图上,我采用的是把要保护的房间与源点相连,有intruder的与汇点相连,相对麻烦. #include <cs ...
- 阿里巴巴算法工程师四面(三轮技术+hr面)详细面经
阿里面试总结: 一遍一遍地刷阿里网站,今天发现“面试中”变成“待跟进offer”了,写个面经攒人品,希望offer通知邮件早点来吧. 我当时投简历时投了C/C++工程师,其实也没经过啥考虑,因为我一开 ...
- 关于连不上dc服务器的机器强行退出域的方法
有时加入域的计算机无法连接到之前的域了,只能强制退出域了,有两个前提条件: 1.断开网络,就是拔掉网线或者禁用网卡. 2.使用本地管理员登陆. 然后命令行执行如下命令即可: netdo ...