本文总结js遍历数组的方法:
问题:遍历数组arr,将各个元素全部转成大写
var arr = ['a','b','c','d'];
方法1:for循环 这个方法比较常用
"use strict";
var arr = ['a','b','c','d'];
var arrUp = [];
for(var i = 0; i < arr.length; i++){
arrUp.push(arr[i].toUpperCase());
}
console.log(arrUp); //['A','B','C','D']
方法2:for in 循环 该方法通常用于遍历对象(数组一种特殊的对象)
"use strict";
var arr = ['a','b','c','d'];
var arrUp = [];
for(var i in arr){
arrUp.push(arr[i].toUpperCase());
}
console.log(arrUp); //['A','B','C','D']
方法3:forEach方法 数组的迭代方法(下文解释)
返回值:无返回值
"use strict";
var arr = ['a','b','c','d'];
var arrUp = [];
arr.forEach(function(key, index, array){
arrUp.push(key.toUpperCase());
});
console.log(arrUp); //['A','B','C','D']
方法4:map方法 数组的迭代方法(下文解释)
返回值:返回每次函数调用结果组成的数组
"use strict";
var arr = ['a','b','c','d'];
var arrUp = arr.map(function(key, index, array){
return key.toUpperCase();
});
console.log(arrUp); //['A','B','C','D']
对于上面的简单问题,可能这个四种方法相对于比较好,但是问题一复杂呢
var arr = [1, 4, 10, 5, 8];
问题:对于这个数组,请计算大于6的数组元素个数
只是举一个简单的例子,上面的四种方法也行,只不过可能判断比较麻烦,这里介绍遍历数组的方法,相信在不同的情景中,它们可能更优。
数组迭代方法
下面的方法,仅仅返回值不同,其余完全一样:接收2个参数,一个函数(必选)和运行该函数的作用域对象(可选,一般不用,目前我不知道有什么妙用,所以不做过多解释)
//要接受的函数,本文叫判断函数
function(key, index, array){
//key: 数组项值
//index: 该项的数组下标
//arr:待操作的数组
}
方法5:every方法
返回值:如果判断函数对于每一项都返回true,则返回true
用处:根据条件检测数组每一项,只想得到布尔值
"use strict";
var arr = [1, 4, 10, 5, 8];
var arrTest = arr.every(function(key, index, array){
return (key > 2);
});
console.log(arrTest); //false
方法6:filter方法
返回值:返回一个数组,数组元素由判断函数会返回true的项组成
用处:条件筛选
"use strict";
var arr = [1, 4, 10, 5, 8];
var arrTest = arr.filter(function(key, index, array){
return (key > 6);
});
console.log(arrTest); //[10, 8]
方法7:some方法
返回值:如果判断函数对于任一项返回true,则返回true
用处:条件筛选
"use strict";
var arr = [1, 4, 10, 5, 8];
var arrTest = arr.some(function(key, index, array){
return (key > 6);
});
console.log(arrTest); //true