您的位置:首页 > 其它

es5新增的数组方法

2019-01-24 18:07 169 查看

常用的数组元素的迭代方法。
1. forEach()方法

forEach()方法的功能是循环遍历数组中的每一个元素;
forEach()方法会接收一个函数;
这个函数包含三个形参,分别为:item, index, array, 用不到时可以不写

  1. item 表示每次迭代的元素
  2. index 表示每次迭代元素的下标
  3. array 表示原数组
var arr = [20,13,11,8,0,11];
var min = arr[0]; //假设数组的第一个元素的为最小值

arr.forEach(function(item,index,array){

//练习一:输出数组的每个元素及其对应的下标
console.log(index,item);

//练习二:输出数组中值为奇数的元素
if(item%2){
console.log(item);
}

//练习三:求数组的最小值
if(item<min){
min = item;
}
})
alert(min);

2. map()方法

返回一个新数组,新数组是原数组的映射;
不改变原数组的值;
新数组的元素值是每次函数return的返回值;
若不写return,接收的新数组的元素值将全为空;

var arr = [20,13,11,8,0,11];
var brr = arr.map(function(item)){

//练习一:将数组的每个元素都将增加到原来的1.2倍
return item*1.2;
// 此时brr为a数组每个元素的1.2倍

//练习二:若return 1,则新数组的每个元素值均为1
return 1;
}

3. filter()方法

过滤元素,返回一个新数组;
新的数组由每次函数返回值为true对应的元素组成;
原数组不受影响;

var arr = [20,13,11,8,0,11];
var brr =arr.filter(function(item)){
//返回值为奇数的元素
return item%2;
}

4. some()方法

return返回的值只要有一项为true,最终的返回值就为true,不会继续遍历后边的元素;
若没有一项满足返回值为true的,就返回false;
原数组不受影响;

var arr = [20,13,11,8,0,11];
var brr = arr.some(function(item){
return item>10;
})
alert(brr); //true

5. every()方法

对数组的每一项执行给定的函数,假如该函数每一项都返回true,最后结果才为true;
只要有一项返回值为false,最后结果就是false。且后边的元素都不会再继续执行函数;
原数组不受影响;

var arr = [20,13,11,8,0,11];
var brr = arr.every(function(item){
return item>10;
})
alert(brr); //false

6.reduce()方法

收敛,返回值是最后一次函数调用的返回值;
不写return时,默认返回undefined;

运行机制
一开始,prev代表数组第一个元素,next指向数组第二个元素 ;
函数有个返回值,会作为下次的prev值;
当给方法第二个参数值时,prev从传的第二个参数值开始,next从第一个元素值开始

var arr = [1,4,5,7,8,10];
var res = arr.reduce(function(prev,next){
console.log(prev+"---"+next);
return 4;
})
console.log(res);

/*
分析:
一开始,prev代表数组第一个元素,next指向数组第二个元素  1---4
函数有个返回值,会作为下次的prev值
4---5
4---7
4---8
4---10
*/
//应用:求数组所有元素的和

var arr = [1,4,5,7,8,10];
var res = arr.reduce(function(prev,next){
console.log(prev+"---"+next);
return prev+next;
})
console.log(res);

/*
分析:
一开始,prev代表数组第一个元素,next指向数组第二个元素  1---4
函数有个返回值,会作为下次的prev值
5---5  返回10
10---7  返回17
17---8  返回25
25---10   返回35
*/
//reduce()还可以有第二个参数

var arr = [1,4,5,7,8,10];
var res = arr.reduce(function(prev,next){
console.log(prev+"---"+next);
return prev+next;
},100)  //prev从传的第二个参数值100开始,next从第一个元素值开始
console.log(res);
//reduce()应用:将两个数组合并成一个对象

var arr3 = ["Lydia","21"];
var arr4 = ["name","age"];
arr4.reduce(function(prev,next,item){
prev[next] = arr3[index];
return prev;
},{}); //传的第二个参数值是一个空对象
console.log(obj);

/*
第一次的prev是一个空对象,对象的next属性(即arr4的第一个元素)的值为arr3的第一个元素值
*/

7. indexOf()方法

判断一个元素是否存在于数组中,若不存在返回-1,若存在就返回它第一次出现的位置。

var arr = [20,13,11,8,0,11];
arr.indexOf(11); //返回第一个11的索引:2
arr.indexOf(2); //返回-1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: