forEach、map、filter、some、every、find之间的区别

forEach:

语法:

array.forEach(callback(currentValue, index, array){

    //do something }) 

callback: 为数组中每个元素执行的函数,该函数接收三个参数,

参数一:当前数组中元素;参数二:索引; 参数三:当前数组。

map:

语法:

var new_array = arr.map(callback[, thisArg]) 

forEach和map循环的区别:forEach没有返回值,即使你给出return也不管用,map会返回一个新数组给你,原数组不会发生改变。

filter:从字面上看就是过滤筛选的意思

语法:

var ages = [32, 33, 16, 40];

function checkAdult(age) {
    return age >= 18;
}

返回一个新的对象数组,不会将原有的数组进行改变。

some:用于检测数组中的元素是否满足条件

注意:some不会对空数组进行检测,不会改变原始数组。

语法:

var ages = [3, 10, 18, 20];

function checkAdult(age) {
    return age >= 18;
}

 

返回的是true或false。

every:用于检测数组中的所有元素是否符合指定条件,

注意:如果数组中有一个元素没有符合条件,则整个表达式返回的都是false,所有元素满足时才返回true,不会对空数组进行检测,不会改变原始数组。

语法:

var ages = [32, 33, 16, 40];

function checkAdult(age) {
    return age >= 18;
}

返回的是true或false

find:返回通过测试(函数内判断)的数组的第一个元素的值,为数组中的每个元素都调用一次函数执行。

注意:

  • 当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
  • 如果没有符合条件的元素返回 undefined
  •  find() 对于空数组,函数是不会执行的。

  •  find() 并没有改变数组的原始值。
语法:

var ages = [3, 10, 18, 20];

function checkAdult(age) {

  return age >= 18;

}

findsome很类似,都是寻找符合条件的,有一个就可以 不过some进去搜罗了一圈回来如果有符合条件的就返回true,而find是将符合条件的那条数据返回出来(返回第一个符合条件的对象)。

上一篇:C++并发之转移线程所有权


下一篇:ES6中数组的forEach() 、map()、filter()、reduce()、some()、every()的用法