4日6日--ES5新增数组方法
forEach使用的函数调用,所以占内存比较大,不如定长for循环和迭代for循环
1、通过forEach将数组中的元素逐个表示出来(遍历方法,读取操作)。
2、通过map将原数组中的元素进行算数运算,并把值返还给新建的数组中(遍历方法,修改操作)。
3、filter提取原数组中符合条件的元素并放在新建的数组中(数据的帅选方法)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ES5新增数组方法1</title>
<script type="text/javascript">
var arr = ["mike","john","andy","bob","jerry","tom"];
arr.forEach(function(n,i){
console.log("第"+(i+1)+"个数据是:"+n);
});
// for(var i=0,len=arr.length;i<len;i++){}
//匿名函数绝大多数场合用于回调
// 匿名函数也能调用,但仅限一次
// (function () {
// console.log('匿名函数');
// })();
var num=[3,4];
var ret=num.map(function(n){
// console.log(arguments);
return n*n;//返回值出现在结果数组中
});
console.log(ret);
console.log(num);
console.log('=====');
num=[3,5,78,2,13];
ret=num.filter(function(n){
return n%2==0;//返回值为true的数据出现在结果数组中
});
console.log(ret);
</script>
</head>
<body>
</body>
</html>
4、通过some和every对数组进行条件方法的判定,every:数组中的每个元素都满足条件才为true否组为false。some:只要数组中的有元素满足条件就为true
5、indexOf(8)返回数组中第一个8所在的位置,lastIndexOf(8)返回数组中最后一个8所在的位置
通过do{}while()+indexOf来返回数组中所有8所在的位置。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ES5新增数组方法2</title>
<script type="text/javascript">
var arr=[12,8,5,7,8,3,8,22];
var ret=arr.every(function(n){
return n>3;
});
console.log(ret);
console.log('======');
var find=arr.indexOf(8);
console.log(find);
find=arr.lastIndexOf(8);
console.log(find);
console.log('======');
find=-1;
do{
find=arr.indexOf(8,find+1);
if(find==-1){
break;
}
console.log("find="+find);
}while(true);
</script>
</head>
<body>
</body>
</html>
6、 var sum=arr.reduce(function(pre,curr){
return pre+curr;
});
通过reduce对数组进行元素相加
7、二维数组:数组中存放的数据还是数组
二维数组扁平化(转为一维数组,在二维数组每一维的数量都相同时有意义)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ES5新增数组方法3</title>
<script type="text/javascript">
var arr=[1,8,5,4];
// arr.reduce(function(pre,curr,index){
// console.log(arguments);
// return curr;
// });
var sum=arr.reduce(function(pre,curr){
return pre+curr;
});
//1+8=9 9+5=14 14+4=18
console.log(sum);
console.log('=====');
//二维数组:数组中存放的数据还是数组
var multi=[];
multi[0]=[2,4,8];//2 4 8 4 7 2
multi[1]=[4,7,2];
multi[2]=[14,17,12];
multi[3]=[24,27,22];
console.log(multi);
for(var i=0,len=multi.length;i<len;i++){
for(var j=0,len2=multi[i].length;j<len2;j++){
console.log(multi[i][j]);
}
}
console.log('=====');
//二维数组扁平化(转为一维数组,在二维数组每一维的数量都相同时有意义)
var newarr=multi.reduce(function(pre,curr){
return pre.concat(curr);
});
console.log(newarr);
//获取2,2位置的数据:
var i=2;
var j=2;
var index=i*3+j;//3是每一维的长度,视具体数组而变
console.log(newarr[index]);
</script>
</head>
<body>
</body>
</html>
浙公网安备 33010602011771号