underscorejs之_.filter(list, predicate, [context])
语法:
_.filter(list, predicate, [context])
说明:
对list集合的每个成员依次进行匹配(根据predicate迭代函数检测),返回匹配成功的集合
- list可以为数组,对象,字符串和arguments
- predicate会传第三个参数value, key, list(参数名可自定义)
- predicate函数需要返回值
- context可以改变predicate函数内部的this
代码示例:
示例一: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");
_.select的功能和_.filter是一样的
var result = _.filter([1, 2, 3], function (value, key, list) {return value % 2 === 1; }); console.log(result) //=> [1, 3]
特殊情况
示例一: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);
list参数可为真假值?
var result = _.filter([1, true, '1', 0, undefined, null]); console.log(result) //=> [1, true, "1"]
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}]
转载于:https://www.cnblogs.com/rechel/p/7615130.html
underscorejs之_.filter(list, predicate, [context])相关推荐
- underscorejs之 _.indexBy(list, iteratee, [context])
语法 _.indexBy(list, iteratee, [context]) 说明 给定一个list,和 一个用来返回一个在列表中的每个元素键 的iterator 函数(或属性名), 返回一个每一项 ...
- Scala Array中_ filter map的用法示例
object S {def main(args: Array[String]): Unit = {println("scala")val arr: Array[Int] = Arr ...
- underscore-1.8.3.js 源码解读全文注释版
// Underscore.js 1.8.3 // http://underscorejs.org // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud an ...
- underscore
underscore 下划线 underscore提供了一套完善的函数式编程的接口.underscore在加载时,会把自身绑定到唯一的全局变量_上,类似jquery把自身绑定到$上一样.这也是名字叫u ...
- 从零开始的全栈工程师——underscore
underscore 是js封装的一个js库 库和框架是有区别的 mvc框架就是backbone就是依赖这个库 underscore就是定义了一个_( 下划线对象 ); 函数库的所有的方法都归属于这个 ...
- Underscore.js (1.7.0)-集合(Collections)(25)
稽核函数(数组或对象) each_.each(list, iteratee, [context]) 别名: forEach 遍历list中的所有元素,按顺序用遍历输出每个元素.如果传递了contex ...
- underscore.js 页面数据渲染
1.underscore.js 源码 // Underscore.js 1.8.3 // http://underscorejs.org // (c) 2009-2015 Jeremy Ashken ...
- 常用JS库源码 - store.js源码/underscore.js源码
常用JS库源码 Store.js源码 "use strict" // Module export pattern from // https://github.com/umdjs/ ...
- node 工具模块lodash
_.chunk(3.0.0) _.chunk(array,[size=1]):将一个数组分成相同长度的几个数组,不够均匀分配的单独成为一个数组. 参数: array(Array):要进行拆分的数组 [ ...
最新文章
- 在CentOS 6.3 64bit上安装libunwind库
- python链表添加多个值_Python基础10之数据结构(下)
- mssql sqlserver 对不同群组对象进行聚合计算的方法分享
- mysql navicat 设计表_Navicat for MySQL 如何设计报表版面
- Rabbitmq消息发送事务与确认机制
- web python selenium自动化面试题_干货分享 | Selenium 自动化测试相关的面试题
- Spark Mllib里的如何对单个数据集用斯皮尔曼计算相关系数
- 将ubuntu的apache2修改成https链接
- Fuel 9.0安装Openstack网络验证失败解决
- LeetCode【709. 转换成小写字母】
- 快速批量打印工程图,这个工具少不了
- Centos搭建socks5代理服务器
- 微信视频聊天怎么美颜?以下方法可以帮到你!
- 第一次尝试使用Python创建季节性ARIMA模型
- 谈谈数独(Sudoku)
- echarts实现饼图阴影,改变饼图的颜色,改变引导线的颜色
- 浏览量比较大的网站应该从哪几个方面入手
- AMiner权威发布区块链大数据报告(附下载)
- 考研线性代数深入理解
- zabbix报警-邮件-钉钉
热门文章
- Pycharm取消双击shift出现搜索框
- git学习(七)新建远程仓库-Gitee为例
- python利用什么写模板_利用python自动生成verilog模块例化模板
- mysql 查询一个数据库里面有多少张数据表
- 一道求因子之和面试算法题
- could not insert:
- java中replaceall用法_Java中String的ReplaceAll使用小结
- sap 供应商表_汐帆科技告诉你SAP 为何是企业最优先的选择?
- python如何打印文字_python怎么打印字符
- emq与mysql_EMQ X 插件持久化系列 (五)MySQL MQTT 数据存储