数组迭代方法

常用的数组迭代方法,很多人第一想到的就是for循环,比如需要迭代出下面数组peoples年龄(age)大于30的人名(name)。

 1 var peoples = [ {
 2     name: ‘Agraj‘,
 3     gender:‘M‘,
 4     age: 29,
 5     address: {
 6         city: ‘Delhi‘, pincode: ‘110064‘
 7     }
 8 }, {
 9     name: ‘Mark‘,
10     gender:‘M‘,
11     age: 35,
12     address: {
13         city: ‘West Bengal‘, pincode: ‘220013‘
14     }
15 }, {
16     name: ‘Lance‘,
17     gender:‘M‘,
18     age: 39,
19     address: {
20         city: ‘Chandigarh‘,
21         pincode: ‘201201‘
22     }
23 }, {
24     name: ‘Vikas‘,
25     gender:‘M‘,
26     age: 21,
27     address: {
28         city: ‘Noida‘, pincode: ‘201301‘
29     }
30 }, {
31     name: ‘Kanika‘,
32     gender:‘F‘,
33     age: 21,
34     address: {
35         city: ‘Noida‘,
36         pincode: ‘201301‘
37     }
38 }];
39 for (var i = 0; i < peoples.length; i++ ) {
40     if (peoples[i].age > 30) {
41         console.log(peoples[i].name + ‘:‘ + peoples[i].age);
42     }
43 }

其实ES5为数组定义了五个迭代方法:

  • forEach():没有返回值,只是针对每个数组项调用指定的函数(callbackfn)
  • every(): 测试数组的所有元素是否都符合指定函数的条件,只要有有一个元素不符合,返回的都会是false
  • some(): 和every()方法类似,不同的是,some()方法在调用指定的函数callbackfn指定的条件符合就会返回true,不符合则返回false
  • filter(): 每个数组项调用指定的函数,条件为true的将返到一个新数组中
  • map(): 每个数组项调用指定的函数,返回每次函数调用的结果组成一个新数组

在这5个数组中,前三个不会生成新的数组,而后两个会生成一个新的数组。

1、forEach

语法:array.forEach(function(currentValue, index, arr), thisValue)

1 peoples.forEach(function (item,index,arr) {
2     if (item.age > 30) {
3         console.log(item.name + ‘:‘ + item.age);
4     }
5 });

也可以将名字重组放在一个新的数组中:

1 var names = [];
2  peoples.forEach(function (people, index) {
3     names.push(people.name);
4 });
5 console.log(names); // ["Agraj", "Mark", "Lance", "Vikas", "Kanika"]

2、every

还是上面开头的数组,如果每一位的年龄都大于或等于30,就会返回“都大于或等于30岁了”,反之返回“不是所有人都大于30岁了”。

语法:array.every(function(currentValue,index,arr), thisValue)

function bigAge(ele,index,arr){
    return (ele.age >= 30);
}
var isBigPeople = peoples.every(bigAge);
if (isBigPeople) {
    console.log(‘都大于或等于30岁了‘);
} else {
    console.log(‘不是所有人都大于30岁了‘);
}

3、some

只要数组中年龄age有一个大于或等于30,就会返回“有部分人还是年纪大了”,反之返回“你们都还很年轻”:

语法:array.some(function(currentValue,index,arr),thisValue)

1 function OldAge(ele,index,array){
2     return (ele.age >= 30);
3 }
4 var isOldPeople = peoples.some(OldAge);
5 if (isOldPeople) {
6     console.log(‘有部分人还是年纪大了‘);
7 } else {
8     console.log(‘你们都还年轻‘);
9 }
4、mapmap()方法返回一个由原数组中的每个元素调用一个指定函数callbackfn后的返回值组成的新数组。如果符合callbackfn会返回符合条件的一个值,将所有返回的值再创建一个新数组。
1 var usersDb = peoples.map(function (user, index) {
2     user.id = index + 1;
3     return user;
4 });
5 console.table(usersDb);

5、filter

filter() 方法使用指定的函数callbackfn测试所有元素,并创建一个包含所有通过测试的元素的新数组。

var guys = peoples.filter(function (user) {
    return user.gender === ‘M‘;
});
console.table(guys); 
时间: 2024-10-06 19:13:26

数组迭代方法的相关文章

数组迭代方法和类数值

数组的迭代方法有every,some,forEach,fliter,map. 每个方法的参数是一个函数,函数的第一个参数是数组项,第二个参数是数组项的索引,第三个参数是数组本身 every方法对数组的每一项执行给定函数,如果每一项的执行结果都为true,则返回true; 1 //用every方法检测数组的每一项是否都是偶数,是则返回true,不是则返回false 2 function testEvery(){ 3 var a=[1,2,5,0,3,9]; 4 var result= a.ever

JS 数组迭代方法

js中数组迭代方法有五种 some() , every(), filter(), forEach(),map(),传入这些方法的函数会接收三个参数(数组项的值,该项在数组中的位置,数组对象本身) var items = [9,67,34,25,56]; //如果items中的所有项都大于9返回true否则返回false 全部满足条件才行 var everyResult = items.every(function(item,index,array){ return (item>9); }); a

S1 :数组迭代方法

ECMAScript 5 还新增了两个归并数组的方法:reduce()和reduceRight().这两个方法都会迭代数组的所有项,然后构建一个最终返回的值.其中,reduce()方法从数组的第一项开始,逐个遍历到最后.而reduceRight()则从数组的最后一项开始,向前遍历到第一项.这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值.传给reduce()和reduceRight()的函数接收4 个参数:前一个值.当前值.项的索引和数组对象.这个函数返回的任何

数组迭代方法—every、filter、forEach、map、some

ECMAScript5为数组定了5个迭代方法.每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响this的值.传入这些方法中的函数会接收三个参数:数组项的值.该项在数组中的位置和数组对象本身.根据使用的方法不同,这个函数执行后的返回值可能会也可能不会影响访问的返回值.以下是这5个迭代方法的作用. every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true. var numbers = [1,2,3,4,5,6,7,8];

js基础之数组迭代方法

Array.forEach() forEach() 方法为每个数组元素调用一次函数(回调函数). var txt = ""; var numbers = [45, 4, 9, 16, 25]; numbers.forEach(myFunction); function myFunction(value) { txt = txt + value + "<br>"; } Array.map() map() 方法通过对每个数组元素执行函数来创建新数组. map

JavaScript中数组迭代方法(jquery)

var arr = [1,2,4,5,6]; //1.forEach(让数组中的每一项做一件事)arr.forEach(function(item,index){    console.log(item);    //1,2,4,5,6}); //2.map(让数组通过某种计算产生一个新数组)var newArr = arr.map(function(item,index){    return item*2;});console.log(newArr);//[2,4,8,10,12] //3.

js iterate数组迭代方法

var array = new Array("a","b","c"); array.every(function(item, index, array){ return (item == "a");}); every()     ——回调函数对每一项都返回true,则返回true some() ——回调函数对任一项返回true,则返回true filter()  ——回调函数对某些项返回true,则返回该项 forEach()

数组的迭代方法之every,some,filter,map,forEach

//数组的迭代方法 var number = [1, 2, 3, 4, 5, 4, 3, 2, 1]; var everyResult = number.every(function(item, index, array){ return (item > 2); }); console.log(everyResult); var someResult = number.some(function(item, index, array){ return (item > 2); }); conso

一张图看懂JavaScript中数组的迭代方法:forEach、map、filter、reduce、every、some

好吧,竟然不能单发一张图,不够200字啊不够200字! 在<JavaScript高级程序设计>中,分门别类介绍了非常多数组方法,其中迭代方法里面有6种,这6种方法在实际项目有着非常广泛的作用.其中本人最爱用forEach和map,好用又高效,不用什么都是for循环大法.但是初学的时候往往觉得头大,这些方法都很像,到底有什么区别?趁着今天有空,我把对着6个方法的认知,用最浅显的图画出来,希望看到的同学觉得有用.