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}]

最新文章

  1. JAVA爬虫挖取CSDN博客文章
  2. lnmp初步学习知识整理
  3. 技术分享:逆向海盗船k95机械键盘
  4. Java Socket(1): 入门
  5. 10.15_SVG可以解决问题吗
  6. 浅谈SQL Server中的快照
  7. C++ 矩阵乘法
  8. Java 8新特性探究(九)跟OOM:Permgen说再见吧
  9. ASP.Net Core Razor 页面路由
  10. xgboost 参数调优指南
  11. ArrayList Vector
  12. ccf--20150903--模板生成系统
  13. Java8学习笔记(七)--Collectors
  14. python+selenium自动化软件测试(第3章):unittes
  15. 服务器端数据合法性验证:签名sign和口令token原理
  16. Log4net详细说明(全)
  17. python 多线程中的同步锁 Lock Rlock Semaphore Event Conditio
  18. 常用 超全局数组$_server
  19. 【剑指offer】04A二维数组中的查找,C++实现
  20. 设置Eclipse/MyEclipse中编辑界面点击任何文件后Package Explorer导航自动定位该文件

热门文章

  1. Linux企业级开发技术(4)——epoll企业级开发之epoll例程
  2. Ubuntu下安装Skyeye
  3. cf702D Road to Post Office
  4. kNN
  5. Piggy-Bank(完全背包)
  6. SRM 500(2-1000pt)
  7. VC++ 动态检测串口的热插拔(一)通过注册表实现
  8. linux和windows同步数据 cwrsync client to rsync server
  9. [PWA] 14. Loop cursor
  10. Swift的闭包(二):捕获值