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服务器,始终无法访问,最后抓包发现 ...
随机推荐
- 今天愉快的hack小记
今天发生了一件很好玩的事情...那就是WZJ的数据结构(负五)被人水掉了...用的是线段树暴力大发好... XYZ折腾了多长时间的论文题就这么被搞掉了...?窝来维护正义了! 怎么卡呢:让线段树走到叶 ...
- POJ-3693-Maximum repetition substring(后缀数组-重复次数最多的连续重复子串)
题意: 给出一个串,求重复次数最多的连续重复子串 分析: 比较容易理解的部分就是枚举长度为L,然后看长度为L的字符串最多连续出现几次. 既然长度为L的串重复出现,那么str[0],str[l],str ...
- javascript isNaN
因为以前felx组件默认是-99999999,后来因为方便组件和数据库的操作,就统一修改Number类型的数据为NAN类型了,然后通过isNaN去判断,而然很多表达式是返回字符串的或者null,要注意 ...
- 图论(网络流):[SDOI2010] 星际竞速
Description 10 年一度的银河系赛车大赛又要开始了.作为全银河最盛大的活动之一,夺得这个项目的冠军无疑是很多人的梦想,来自杰森座 α星的悠悠也是其中之一. 赛车大赛的赛场由 N 颗行星和M ...
- 【模拟】ECNA 2015 I What's on the Grille? (Codeforces GYM 100825)
题目链接: http://codeforces.com/gym/100825 题目大意: 栅栏密码.给定N(N<=10),密钥为一个N*N的矩阵,'.'代表空格可以看到,'X'代表被遮挡,还有密 ...
- 加密解密,CryptoStream()的使用
一:上图 二:代码 主界面代码 using System; using System.Collections.Generic; using System.ComponentModel; using S ...
- .net快速创建PDF文档 by c#
原文地址:http://www.cnblogs.com/Creator/archive/2010/03/13/1685020.html C#引用IText创建PDF文档 先引用IText 可以从 ...
- 二次战CPP链表
Felling By Ruiy: Pre-learnning link list knowloages 熟悉 指针相关操作应用+结构体数据类型应用,且能简单融合使用,堆内存(内存泄露)->类似于 ...
- Eclipse : 找不到或无法加载主类
问题: 找不到或无法加载主类 解决思路: Step1: 去网上百度了下,基本上都说是环境变量的问题. 原因:环境变量设置有问题. 解决方法:重设环境变量 结果:当然问题没解决. Step2:再次百度, ...
- Oulipo - HDU 1686 (KMP模板题)
题目大意:题目叙述很多,其实只看输入输出也能明白什么意思,给两个串W,T, 判断T串中包含几个串W. 分析:还是基础的KMP应用....................... 直接上代码. === ...