underscorejs-filter学习
2.6 filter
2.6.1 语法:
_.filter(list, predicate, [context])
2.6.2 说明:
对list集合的每个成员依次进行匹配(根据predicate迭代函数检测),返回匹配成功的集合
- list可以为数组,对象,字符串和arguments
- predicate会传第三个参数value, key, list(参数名可自定义)
- predicate函数需要返回值
- context可以改变predicate函数内部的this
2.6.3 代码示例:
示例一:filter对数组,对象,字符串,arguments进行操作并返回匹配成功的数据
var result;
// 操作数组
result = _.filter([1, 2, 3], function (value) {
return value % 2 === 1;
});
console.log(result) //=> [1, 3]
// 操作对象
result = _.filter({ one: '一', two: '二', three: '三', num: 123, bool: false }, function (value) {
return typeof value === "string";
});
console.log(result) //=> ["一", "二", "三"]
// 操作复杂的对象
var obj = {
levelA: {
level0: 'level0',
level1: 'level1'
},
levelB: '一',
levelC: 1,
levelD: {
level3: 'level3'
}
}
result = _.filter(obj, function (value) {
return typeof value === "object";
});
console.log(result) //=> [{level0: "level0", level1: "level1", {level3: 'level3'}}]
// 操作字符串(此处将字符拆分为数组)
result = _.filter('123', function (value) {
return value === '2' || value === '3';
});
console.log(result) //=> ["2", "3"]
//操作arguments
function abc() {
result = _.filter(arguments, function (value) {
return value % 2 === 1;
});
console.log(result); //=> [1, 3]
}
abc(1, 2, 3);
示例二:predicate函数传递的参数(函数内部需要return返回值,否则返回[])
var result;
//数组的情况
result = _.filter([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]
});
console.log(result) //=> []
//对象的情况
result = _.filter({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: "三"}
});
console.log(result) //=> []
示例三:context可以改变predicate内部的this
var result;
// 数组的情况
result = _.filter([1, 2, 3], function (value, key, list) {
console.log(this); //=> [1, 2, 3] this是数组
}, [1, 2, 3]);
// 对象的情况
result = _.filter([1, 2, 3], function (value, key, list) {
console.log(this); //=> Object {no: 10} this是对象
}, { "no": 10 });
// 字符串的情况
result = _.filter([1, 2, 3], function (value, key, list) {
console.log(this); //=> String {0: "1", 1: "2", 2: "3", length: 3, [[PrimitiveValue]]: "123"}
// this是将字符串拆分后的对象
}, "123");
2.6.4 _.select的功能和_.filter是一样的
var result = _.filter([1, 2, 3], function (value, key, list) {
return value % 2 === 1;
});
console.log(result) //=> [1, 3]
2.6.5 特殊情况
示例一:list的特殊情况
//例如:null,undefined,0,true,this等;
var result = _.filter(null, function (value, key, list) {
return true;
});
console.log(result) //=> []
示例二:predicate函数的this为window全局对象的情况
// 例如:null,undefined,window,this等
var result = _.filter([1, 2, 3], function (value, key, list) {
console.log(this); //=> this是window全局对象
}, null);
2.6.6 list参数可为真假值?
var result = _.filter([1, true, '1', 0, undefined, null]);
console.log(result) //=> [1, true, "1"]
2.6.7 predicate还有其他写法?
示例一:predicate参数为空的时候
var result = _.filter({x: 1, y: 2});
console.log(result) //=> [1, 2]
示例二:predicate参数为一个字符的时候
var result = _.filter([{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 = _.filter(obj, {x: 1});
console.log(result) //=> [{x: 1, y: 2},{x: 1}]
underscorejs-filter学习的更多相关文章
- 不学就吃亏的underscorejs类库学习示例 ——(集合篇)
underscorejs是一个很不错的类库,我的很多项目都引用了这个类库,的确可以带来很多方便. 记得我当初学的时候,看underscorejs的api是看的一知半解的,甚至不明白api里的conte ...
- Angular之filter学习
过滤器(filter)正如其名,作用就是接收一个输入,通过某个规则进行处理,然后返回处理后的结果.主要用在数据的格式化上,例如获取一个数组中的子集,对数组中的元素进行排序等.ng内置了一些过滤器,它们 ...
- Filter学习
在这之前一直对filter感到陌生,有点细思极恐的感觉--终于下定决心来学习一下,欢迎拍砖-- Filter的主要作用是实现对HttpServletRequest的预处理,也可以对HttpServle ...
- (一) ffmpeg filter学习-使用流程
FFMPEG中有一个类库:libavfilter.该类库提供了各种视音频过滤器.之前一直没有怎么使用过这个类库,最近看了一下它的使用说明,发现还是很强大的,有很多现成的filter供使用,完成视频的处 ...
- java web filter 学习(2)
本文主要对filter的基本使用进行了讲解,其中涉及到了 filter是什么 一个filter处理一个jsp 多个filter处理一个jsp filter是什么 Filter 是java下的一种过滤器 ...
- Bloom Filter学习
参考文献: Bloom Filters - the math http://pages.cs.wisc.edu/~cao/papers/summary-cache/node8.html B ...
- JavaWeb学习总结-07 Filter 学习和使用
一 Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...
- Filter学习:项目第八阶段
public interface Filter A filter is an object that performs filtering tasks on either the request ...
- (三) ffmpeg filter学习-编写自己的filter
目录 目录 什么是ffmpeg filter 如何使用ffmpeg filter 1 将输入的1920x1080缩小到960x540输出 2 为视频添加logo 3 去掉视频的logo 自己写一个过滤 ...
- (二) ffmpeg filter学习--混音实现
Audio 混音实现 从FFMPEG原生代码doc/examples/filtering_audio.c修改而来. ffmpeg版本信息 ffmpeg version N-82997-g557c0df ...
随机推荐
- wait和waitpid的使用和区别
昨天看到一则新闻,讲的是一个游戏开发大拿猝死去世的新闻,公司发了讣告,打算接下去给他爸爸妈妈每个月10000的赡养费,很是感慨,本来中国的游戏业和国外就差距大,天妒英才啊.真心想对那些游戏公司的领导说 ...
- 2012 A 《中国近现代史纲要》课程期末考试试卷
湖南人文科技学院2012—2013学年第1学期公共课 2011级<中国近现代史纲要>课程期末考试试卷 考核方式:(开卷) ...
- centos 安装node js环境
node.js支持多种平台安装,其中Win平台安装比较简单,下面重点讲解下Linux平台的安装步骤.本文以CentOS平台为实例,不准备讲 解采取源码编译安装方式,而是采取在node.js网站下载已经 ...
- poj1017
一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6.这些产品通常使用一个 6*6*h 的长方体包 ...
- 互联网TCP/IP五层模型(一)
转载自:阮一峰 我们每天使用互联网.你是否想过,它是怎样实现的? 全世界几十亿台电脑,连接在一起,两两通信. 上海的某一块网卡送出信号,洛杉矶的还有一块网卡竟然就收到了.两者实际上根本不知道对方的物理 ...
- SmartFoxServer 2x的pythonclient
最近的研究SmartFoxServer 2x.这是一个对网络游戏的Web开发框架.服务器基于java netty为发展框架,client支持flash,unity, ios, android(java ...
- 警告"Local declaration of 'XXX' hides instance variable"原因
Local declaration of 'XXX' hides instance variable 是因为本地变量名跟函数变量名同名 ,.在命名上要注意.....
- 刨根问底:对于 self = [super init] 的思考
对象初始化有两种方式:[class new] 与 [[class alloc] init] 对于后者,有分配和初始化的过程,alloc 从应用程序的虚拟地址空间上为该对象分配足够的内存,并且将新对象的 ...
- Android 用MediaCodec实现视频硬解码
http://blog.csdn.net/halleyzhang3/article/details/11473961 http://www.360doc.com/content/14/0119/10/ ...
- sharesdk 的使用
社交分享组件有很多 介绍一下sharesdk 的使用 官网:http://sharesdk.cn/ 1.先上效果图 2.主要代码: public class TestShare extends Act ...