欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js数组的迭代方法(filter, every, some, forEach)

程序员文章站 2022-06-29 20:03:18
...
/*数组的迭代方法*/
//every() 对数组中每一项运行给定函数,如果该函数'每一项'都返回true 则返回true;
var numbers = [3,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,array) { // item不满足条件的值 index不满足条件的值的索引 array传入的数组
    //console.log(item+'---', index+'---', array+'1----'); //3--- 0--- 3,2,3,4,5,4,3,2,11----  ;2--- 1--- 3,2,3,4,5,4,3,2,11----
    return(item > 2);
});
console.log(everyResult);//false

//some() :对数组中的每一项运行给定函数,如果该函数对'任一项'返回 true ,则返回 true 。
var someResult = numbers.some(function(item,index,array) {
    console.log(item+'---', index+'---', array+'1----');
    return (item > 2);
});
console.log(someResult);//true
//filter() :对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组;
//它利用指定的函数确定是否在返回的数组中包含某一项。
// 例如,要返回一个所有数值都大于 2 的数组,可以使用以下代码;
var numberFilter = [1,2,3,4,5,4,3,2,1];
var fliterResult = numberFilter.filter(function(item, index, array) {
    console.log(item+'---', index+'---', array+'1----');//这里的都是numberFilter所有属性没过滤
    return(item > 2);
});
console.log(fliterResult);//[3, 4, 5, 4, 3] 创建并返回了包含 3、4、5、4、3 的数组,因为传入的函数对它们每一项都返回 true 。这个方法对查询符合某些条件的所有数组项非常有用;

//map() :对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
// map() 也返回一个数组,而这个数组的每一项都是在原始数组中的对应项上运行传入函数的结果。
// 例如,可以给数组中的每一项乘以 2,然后返回这些乘积组成的数组,如下所示。
var mapNumbers = [1,2,3,4,5,4,3,2,1];
var mapResult = mapNumbers.map(function(item, index, array){
    return item * 2;
});
alert(mapResult); //[2,4,6,8,10,8,6,4,2];
//最后一个方法是 forEach() ,它只是对数组中的每一项运行传入的函数。这个方法没有返回值,
// 本质上与使用 for 循环迭代数组一样。来看一个例子。
var forEachNumbers = [1,2,3,4,5,4,3,2,1];
forEachNumbers.forEach(function(item, index, array){
//执行某些操作
});
//以上方法都不会修改数组中的包含的值。
// 在这些方法中,最相似的是 every() 和 some() ,它们都用于查询数组中的项是否满足某个条件。
// 对 every() 来说,传入的函数必须对每一项都返回 true ,这个方法才返回 true ;否则,它就返回
// false 。而 some() 方法则是只要传入的函数对数组中的某一项返回 true ,就会返回 true 。