es5新增的数组方法
2019-01-24 18:07
169 查看
常用的数组元素的迭代方法。
1. forEach()方法
forEach()方法的功能是循环遍历数组中的每一个元素;
forEach()方法会接收一个函数;
这个函数包含三个形参,分别为:item, index, array, 用不到时可以不写
- item 表示每次迭代的元素
- index 表示每次迭代元素的下标
- 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
相关文章推荐
- ES5中数组新增的方法说明
- Array数组常用方法、ES5扩展方法、ES6新增方法
- es5新增数组方法
- es5中新增的数组方法
- es5中js的数组 新增方法总结
- ES6中新增数组方法与ES5之间的区别
- 聊一聊ES5数组(Array)新增的那些方法
- ES5中新增的Array方法详细说明
- ECMAScript5数组新增方法
- ES5中新增的Array方法详细说明
- PHP新增的常用数组声明定义方法和注意细节
- ES5数组方法
- ES5 Array新增方法
- ECMAScript5(ES5)标准中扩展的数组Array方法
- ECMA5Script新增的数组循环遍历九个方法
- es6 Array数组对象新增方法 Array.of()
- ES5中新增的Array方法详细说明
- JavaScript之再谈数组之数组方法、ES5方法
- ES6中数组array新增方法实例总结
- 模拟 ES5 的数组方法