伪数组
伪数组:没有数组的方法,用数字做属性
arguments 是伪数组
arguments{ '0':11, '1':22 } arguments[0]; //访问属性0的值 或: let stu=function(){ console.log(arguments); } stu(11,22,33); // {'0':11,'1':22,'2':33}
循环数组的方法
for
let ary=[100,200,300,400,500,600]; for(let i=0,i<ary.length,i++){ console.log(); }
forEach
ary.forEach(function(ele,i){ console.log(ele,i); // 100 0 200 1 }); 300 2 ..600 5
for-of
for(let value of ary){ console.log(value); // 100 200 } ..600
es5:
map
- 结果与原数组个数一样
- return 后返回值个数一样,没有具体指返回undefined
ary.map(function(ele){ console.log(ele); // 100 return; 200 }); .. 600 或: let=ary.map(function(ele){ console.log(ele); return (ele); // newAry[100,200,300,400,500,600] }); console.log('newAry',newAry); return ele*10; // newAry[1000,2000,3000,4000,5000,6000]
filter
可过滤原数组
let=ary.filter(function(ele){ console.log(ele); if(ele>=300){ return ele; } }); console.log('newAry',newAry);
reduce
每一次循环的return作为第一个参数;每一次的参数是前一次的结果
let newAry=ary.reduce(function(ele,ele1){
console.log(ele,ele1); // 100,200 // return ele;
return 1; // 1 300
1 400
}); 1 500
return ele,ele1; 1 600 console.log('newAry',newAry); // 2100
- 伪数组没有数组的属性、方法,需转换为真数组;伪数组以数字作属性
- 循环数组的方法:需注意每一种方法返回的结果不同,具体值的差异和返回值与原数组个数的差异;es5 中循环的方法