数组的迭代遍历
格式
数组/boolean/无 = 数组.every/filter/forEach/map/some(
function(element,index,arr){
程序和返回值;
}
);
every()
参数:回调函数
返回值;boolean类型值
var arr = ["关长","张飞","赵子龙","马超","黄忠"];
var cool= arr.every(function (elements,index,array) {
console.log(elements);
console.log(index);
console.log(array);
});
如结果所示,只遍历了数组的第一个元素,原因是因为其他对数组中每一项运行以下函数,如果都返回true,every返回true,如果有一项返回false,则停止遍历 every返回false;不写默认返回false,而上述代码没有返回值默认为false
若想遍历所有元素则需要添加return true
var arr = ["关长","张飞","赵子龙","马超","黄忠"];
var cool= arr.every(function (elements,index,array) {
console.log(elements);
console.log(index);
console.log(array);
return true ;
});
3
补充:
var arr = ["关长","张飞","赵子龙","马超","黄忠"];
var cool= arr.every(function (elements,index,array) {
elements="sss";//该不改变数组本身元素。
array[index]="sss";// 该行代码可以修改数组本身的第一项元素
console.log(elements);
console.log(index);
console.log(array);
});
运行结果:
filter返回值是一个新数组。return为true的数组。
var arr = ["关长","张飞","赵子龙","马超","黄忠"];
var arr1 = arr.filter(function (ele,index,array) {
if(ele.length>2){
return true;
}
return false;
});
console.log(arr1);
运行结果:
如结果所示,元素长度超过2的没有打印,即只打印了return为ture的数组
foreach遍历数组(无返回值,纯操作数组中的元素)
var arr = ["关长","张飞","赵子龙","马超","黄忠"];
var str = "!";
arr.forEach(function (ele,index,array) {
str+=ele;
});
alert(str);*
运行结果:
map有返回值,返回什么都添加到新数组中。
var arr = ["关长","张飞","赵子龙","马超","黄忠"];
var cool= arr.map(function (element,index,array) {
return element+"你好";
});
console.log(cool);
运行结果:
如图所示,所有元素都添加了你好
some有返回值,函数结果有一个是true,本方法结果也是true。
var arr = ["关长","张飞","赵子龙","马超","黄忠"];
var flag = arr.some(function (ele,index,array) {
if(ele.length>2){
return true;
}
return false;
})
alert(flag);