underscorejs-reject学习
2.9 reject
2.9.1 语法:
_.reject(list, predicate, [context])
2.9.2 说明:
前边我们已经学习了filter方法,那么我们在学习reject之前,先让我们来想一下reject和filter有什么关系呢?
filter返回一个的集合(匹配成功),reject是返回一个集合(匹配失败)
对list集合的每个成员依次进行匹配(根据predicate迭代函数检测),返回匹配失败的集合
- list可以为数组,对象,字符串和arguments
- predicate会传第三个参数value, key, list(参数名可自定义)
- context可以改变predicate函数内部的this
2.9.3 代码示例:
示例一:reject对数组,对象,字符串,arguments进行操作并返回匹配成功的数据
var result;
// 操作数组
result = _.reject([1, 2, 3, 4], function (value) {
return value % 2 === 1;
});
console.log(result) //=> [2, 4]
// 操作对象
result = _.reject({ one: '一', two: '二', three: '三', num: 123, bool: false }, function (value) {
return typeof value === "string";
});
console.log(result) //=> [123, false]
// 操作复杂的对象
var obj = {
levelA: {
level0: 'level0',
level1: 'level1'
},
levelB: '一',
levelC: 1,
levelD: {
level3: 'level3'
}
}
result = _.reject(obj, function (value) {
return typeof value === "object";
});
console.log(result) //=> ["一", 1]
// 操作字符串(此处将字符拆分为数组)
result = _.reject('123', function (value) {
return value === '2';
});
console.log(result) //=> ["1", "3"]
//操作arguments
function abc() {
result = _.reject(arguments, function (value) {
return value % 2 === 1;
});
console.log(result); //=> [2, 4]
}
abc(1, 2, 3, 4);
示例二:predicate函数传递的参数(函数内部需要return返回值,否则返回一个集合,此集合则是list集合的属性值)
var result;
//数组的情况
result = _.reject([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) //=> [1, 2, 3]
//对象的情况
result = _.reject({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 = _.reject([1, 2, 3], function (value, key, list) {
console.log(this); //=> [1, 2, 3] this是数组
}, [1, 2, 3]);
// 对象的情况
result = _.reject([1, 2, 3], function (value, key, list) {
console.log(this); //=> Object {no: 10} this是对象
}, { "no": 10 });
// 字符串的情况
result = _.reject([1, 2, 3], function (value, key, list) {
console.log(this); //=> String {0: "1", 1: "2", 2: "3", length: 3, [[PrimitiveValue]]: "123"}
// this是将字符串拆分后的对象
}, "123");
2.9.4 特殊情况
示例一:list的特殊情况
//例如:null,undefined,0,true,this等;
var result = _.reject(null, function (value, key, list) {
return true;
});
console.log(result) //=> []
示例二:predicate函数的this为window全局对象的情况
// 例如:null,undefined,window,this等
var result = _.reject([1, 2, 3], function (value, key, list) {
console.log(this); //=> this是window全局对象
}, null);
2.9.5 list参数可为真假值?
var result = _.reject([1, true, '1', 0, undefined, null]);
console.log(result) //=> [0, undefined, null]
2.9.6 predicate还有其他写法?
示例一:predicate参数为空的时候
var result = _.reject({x: 1, y: 2, z: false});
console.log(result) //=> [false]
示例二:predicate参数为一个字符的时候
var result = _.reject([{x: 1}, {y: 2}], 'x');
console.log(result) //=> [{y: 2}]
示例三:predicate参数为对象的时候
var obj = [
{x: 1, y: 2},
{x: 1},
{y: 2, z: 3}
]
var result = _.reject(obj, {x: 1});
console.log(result) //=> [{y: 2, z: 3}]
underscorejs-reject学习的更多相关文章
- 不学就吃亏的underscorejs类库学习示例 ——(集合篇)
underscorejs是一个很不错的类库,我的很多项目都引用了这个类库,的确可以带来很多方便. 记得我当初学的时候,看underscorejs的api是看的一知半解的,甚至不明白api里的conte ...
- Javascript - Promise学习笔记
最近工作轻松了点,想起了以前总是看到的一个单词promise,于是耐心下来学习了一下. 一:Promise是什么?为什么会有这个东西? 首先说明,Promise是为了解决javascript异步编 ...
- WeX5学习笔记
目录 WeX5学习笔记... 1 1.轻松看透WeX5产品能力和技术... 1 2.WeX5可以怎么玩?... 3 一.纯本地App. 3 二.关联一个网站,希望默认就打开某页... 4 三.UI设计 ...
- SAE学习-使用SAE的Storage服务存储图片
看到园子里面有同学写了一篇<基于PHP实现阿里云开放存储服务>,围观地址:http://www.cnblogs.com/nosqlcoco/p/3474773.html.想起自己也在Sin ...
- jQuery源代码学习之九—jQuery事件模块
jQuery事件系统并没有将事件坚挺函数直接绑定在DOM元素上,而是基于事件缓存模块来管理监听函数的. 二.jQuery事件模块的代码结构 //定义了一些正则 // // //jQuery事件对象 j ...
- 【转载】学习资料存档:jQuery的deferred对象详解
我在以前的文章里提到promise和deferred,这两个东西其实是对回调函数的一种写法,javascript的难点之一是回调函数,但是我们要写出优秀的javascript代码又不得不灵活运用回调函 ...
- backbone库学习-Collection
backbone库的结构: http://www.cnblogs.com/nuysoft/archive/2012/03/19/2404274.html 本文所有例子来自于http://blog.cs ...
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q1-Q3)
这里我把从网上搜集到的针对Sharepoint 70-576的有关练习进行系统的解析,整理成一个系列, 分期.分批次共享出来,供大家研究. 70-573考试注重的是"知道"相关知识 ...
- [转]向facebook学习,通过协程实现mysql查询的异步化
FROM : 通过协程实现mysql查询的异步化 前言 最近学习了赵海平的演讲,了解到facebook的mysql查询可以进行异步化,从而提高性能.由于facebook实现的比较早,他们不得不对php ...
- 【转】IPtables学习笔记
写在前面,大家测试玩iptables时要记得自己配置了那些东西,测试完成后记得删除啊,博主忘了删除一个input REJECT链的一条记录,后续测试搭建了apache服务器,始终无法访问,最后抓包发现 ...
随机推荐
- COJ 0349 WZJ的旅行(五)
WZJ的旅行(五) 难度级别:E: 运行时间限制:3000ms: 运行空间限制:262144KB: 代码长度限制:2000000B 试题描述 WZJ又要去旅行了T^T=0.幻想国由N个城市组成,由于道 ...
- hg 证书验证失败
hg clone https://bitbucket.org/pygame/pygame 出现abort: error: _ssl.c:504: error:14090086:SSL routines ...
- 图论(二分图最大权独立点集):COGS 2051. 王者之剑
2051. 王者之剑 ★★★☆ 输入文件:Excalibur.in 输出文件:Excalibur.out 简单对比 时间限制:1 s 内存限制:256 MB [题目描述] 这是在阿尔托 ...
- Delphi 生成excel中的饼图
生成excel中的饼图 var i,j,m,n,count1:integer; str:string; Jdate:tdatetime; channellist,potBstrtime,potEstr ...
- python数据的存储和持久化操作
Python的数据持久化操作主要是六类:普通文件.DBM文件.Pickled对象存储.shelve对象存储.对象数据库存储.关系数据库存储. 普通文件不解释了,DBM就是把字符串的键值对存储在文件里: ...
- 用canvas把图片变成黑白相片
<!--这里没有代码--> 原来是把灰度系数分别 乘以 每个像素点的三个像素色(R,G,B)的值,然后得到的三个值加起来,再把得到的值赋值进去给每个R ,G,B. 微软的MSDN上提到的是 ...
- Bloom Filter 原理与应用
介绍 Bloom Filter是一种简单的节省空间的随机化的数据结构,支持用户查询的集合.一般我们使用STL的std::set, stdext::hash_set,std::set是用红黑树实现的,s ...
- hash定义
* 若结构中存在关键字和K相等的记录,则必定存储在f(K)的位置上.由此,不需比较便可直接取得所查记录.这个对应关系f称为 散列函数(Hash function),按这个思想建立的表为 散列表. * ...
- Hibernate Criterion
在查询方法设计上能够灵活的依据Criteria的特点来方便地进行查询条件的组装.Hibernate设计了CriteriaSpecification作为Criteria的父接口,以下提供了Criteri ...
- 玩转Web之servlet(三)---一张图看懂B/S架构
学WEB, 首先 要明确B/S架构,本文将简单说一下小编的愚见,若有不当,欢迎大家指正. 首先,什么是B/S架构?B/S是Broweser/Server的缩写,即浏览器/server模式,简单说就是c ...