.map() .filter() .reduce() .includes() .some() .every()的用法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
// What you have
var officers = [
{id:1,name:'andy',age:15,weight:60},
{id:2,name:'sam',age:20,weight:50},
{id:3,name:'julia',age:15,weight:40},
{id:4,name:'tom',age:25,weight:30}
]
// What you need
// [1,2,3,4] // forEach()
// var officersIds = [];
// officers.forEach(val => {
// console.log(val)
// officersIds.push(val.id)
// })
// console.log(officersIds) // map
const officersIds = officers.map(val=>val.id)
// console.log(officersIds) // filter
const teenager = officers.filter(officers => officers.age < 18)
console.log(teenager)
// {id: 1, name: "andy", age: 15, weight: 60}
// {id: 3, name: "julia", age: 15, weight: 40} const adult = officers.filter(officers => officers.age > 18)
console.log(adult)
// {id: 2, name: "sam", age: 20, weight: 50}
// {id: 4, name: "tom", age: 25, weight: 30} // reduce 可以直观的返回数组里面指定的一个值或者对象
// 所有职员的体重
const totalWeight = officers.reduce((param1,param2) => param1+param2.weight,0)
console.log(totalWeight) //
</script>
</head>
<body> </body>
</html>
js数组includes()
Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似。该方法属于 ES7 ,但 Babel 转码器已经支持。
[1, 2, 3].includes(2); // true [1, 2, 3].includes(4); // false [1, 2, NaN].includes(NaN); // true
该方法的第二个参数表示搜索的起始位置,默认为 0 。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为 -4 ,但数组长度为 3 ),则会重置为从 0 开始。
[1, 2, 3].includes(3, 3); // false [1, 2, 3].includes(3, -1); // true
没有该方法之前,我们通常使用数组的indexOf方法,检查是否包含某个值。
if (arr.indexOf(el) !== -1) {
// ...
}
indexOf方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于 -1 ,表达起来不够直观。二是,它内部使用严格相当运算符( === )进行判断,这会导致对NaN的误判。
[NaN].indexOf(NaN) // -1 includes使用的是不一样的判断算法,就没有这个问题。 [NaN].includes(NaN) // true
JS中map()/some()/every()/filter()的区别
js的Array对象有map、some、every、filter几个方法都能对数组中的每个对象进行处理,但是他们之间的功能又各有差别,所以在记下。
map():通过指定函数处理数组的每个元素,并返回处理后的数组。
1 var numbers = [4, 9, 16, 25];
2
3 function myFunction() {
4 console.log(numbers.map(Math.sqrt));
5 }
输出结果为:
2,3,4,5
map() 方法会将数组中元素依次传入方法中,并将方法的返回结果组成新数组返回。
传入的function可以有自己的三个形参,currentValue, index,arr分别代表当前元素,元素索引,元素所属数组对象;其中currentValue是必须的。
注意:map不会改变原数组,map不会检查空数组
some():用于检测数组中的元素是否满足指定条件(函数提供)
var ages = [3, 10, 18, 20];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
console.log(ages.some(checkAdult));
}
写成简单的es6的方式:
var ages = [3,10,18,20]
const need = ages.some(age=>age>=18)
console.log(need) // true
输出为:true
some方法会依次执行数组的每个元素;
- 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测
- 如果没有满足条件的元素,则返回false
- function形参和map一样
注意:some不会改变原数组,some不会检查空数组
every:用于检测数组所有元素是否都符合指定条件(通过函数提供)
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
console.log(ages.every(checkAdult));
}
写成简单的es6方式:
var ages = [3,10,18,20]
const need2 = ages.every(age=>age>=18)
console.log(need2)// false
输出结果:false
every和some正好相反:
- 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
- 如果所有元素都满足条件,则返回 true。
- function形参同上
注意:some不会改变原数组,some不会检查空数组
filter:创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
console.log(ages.filter(checkAdult));
}
写成简单的es6形式:
var ages = [3,10,18,20]
const need2 = ages.filter(age=>age>=18)
console.log(need2)// [18,20]
filter会根据函数中的筛选条件将返回的结果组成一个新的数组并返回
.map() .filter() .reduce() .includes() .some() .every()的用法的更多相关文章
- python 内置函数 map filter reduce lambda
map(函数名,可遍历迭代的对象) # 列组元素全加 10 # map(需要做什么的函数,遍历迭代对象)函数 map()遍历序列得到一个列表,列表的序号和个数和原来一样 l = [2,3,4,5,6, ...
- 数组的高阶方法map filter reduce的使用
数组中常用的高阶方法: foreach map filter reduce some every 在这些方法中都是对数组中每一个元素进行遍历操作,只有foreach是没有 ...
- 如何在python3.3用 map filter reduce
在3.3里,如果直接使用map(), filter(), reduce(), 会出现 >>> def f(x): return x % 2 != 0 and x % 3 != 0 ...
- Swift map filter reduce 使用指南
转载:https://useyourloaf.com/blog/swift-guide-to-map-filter-reduce/ Using map, filter or reduce to ope ...
- python常用函数进阶(2)之map,filter,reduce,zip
Basic Python : Map, Filter, Reduce, Zip 1-Map() 1.1 Syntax # fun : a function applying to the iterab ...
- Python map filter reduce enumerate zip 的用法
map map(func, list) 把list中的数字,一个一个运用到func中,常和lambda一起用. nums = [1, 2, 3, 4, 5] [*map(lambda x: x**2, ...
- lambda,map,filter,reduce
lambda 编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数.返回一个函数对象. func = lambda x,y:x+y fu ...
- Python3中高阶函数lambda,filter,map,reduce,zip的详细用法
在Python里有五大高阶函数,他们分别是lambda()匿名函数,filter()筛选函数,map()函数,reduce()函数,zip()函数.下面就让我们来详细的了解一下这五种函数的具体用法吧. ...
- 07 Python中zip(),map(),filter(),reduce()用法
一. zip() zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 ...
随机推荐
- 【JZOJ4920】【NOIP2017提高组模拟12.10】降雷皇
题目描述 降雷皇哈蒙很喜欢雷电,他想找到神奇的电光. 哈蒙有n条导线排成一排,每条导线有一个电阻值,神奇的电光只能从一根导线传到电阻比它大的上面,而且必须从左边向右传导,当然导线不必是连续的. 哈蒙想 ...
- [已转移]js事件流之事件冒泡的应用----事件委托
该文章已转移到博客:https://cynthia0329.github.io/ 什么是事件委托? 它还有一个名字叫事件代理. JavaScript高级程序设计上讲: 事件委托就是利用事件冒泡,只指定 ...
- MongoDB负载信息一目了然 阿里云HDM重磅发布MongoDB监控和诊断功能
混合云数据库管理(HDM)的统一监控.告警.诊断功能新增了对MongoDB的支持. 通过直观的方式将MongoDB多个维度的负载信息统一整合,不仅可以清晰的查看实时负载信息,也可以方便的确认历史负载情 ...
- 百度网盘直链下载助手(MacOS&Chrome)
简介 众所周知,通过百度网盘(未开通会员)直接下载文件的速度极慢,通过安装浏览器插件可以极大的提高下载速度. 安装文件 Tampermonkey NeatDownloadManager Extensi ...
- js数组增删
1.shift() 2.pop() 3.push() 4.unshift() 5.splice(start,num,string...)
- 自定义属性 —— data-*
一.基本概念 在HTML5中添加了data-*的方式来自定义属性,所谓data-*实际上上就是data-前缀加上自定义的属性名,使用这样的结构可以进行数据存放.使用data-*可以解决自定义属性混乱无 ...
- HTTP Status 500 - java.lang.ClassNotFoundException: org.apache.jsp.register_jsp
你搜一下你的页面中是不是有<!---->的注释 去掉就好了 改成jsp的注释 1).JSP页面中的HTML注释 JSP页面中的HTML注释使用“<!—”和“-->”创建,它的具 ...
- iOS 9整理
WWDC 2015上那些酷酷的新内容(一) http://www.cocoachina.com/apple/20150611/12120.html
- @loj - 2091@ 「ZJOI2016」小星星
目录 @description@ @solution@ @accepted code@ @details@ @description@ 小 Y 是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有 ...
- oracle SELECT子句中避免使用 ‘ * ‘
当你想在SELECT子句中列出所有的COLUMN时,使用动态SQL列引用 ‘*’ 是一个方便的方法. 不幸的是,这是一个非常低效的方法. 实际上,ORACLE在解析的过程中, 会将’*’ 依次转换成所 ...