遍历数组的常用方法forEach,filter,map等

1.最传统的for循环遍历

    var arr=[1,2,3,4];
    for(var i=0;i<arr,length;i++){
        console.log(arr[i]);
    }
    //优化版
    for(var i=0;len=arr.length;i<len;i++){
        console.log(arr[i]);
    }
    //使用临时变量len将数组的长度存起来,避免重复获取,当数组较大时,优化效果比较明显

2.for…in循环

var arr=[1,2,3,4];
for(var i in arr){
    console.log(arr[i]);
}

3.for…of

var arr=['a','b','c','d'];
for(var item of arr){
    console.log(item);
}

for…in和for…of循环的区别
循环对象属性时使用for…in,在遍历数组的时候使用for…of
for…in是ES5标准,for…of是ES6标准
for…in循环出来的结果是key,而for…of循环出来的结果是value
for…of不能遍历普通对象,要和Object.keys()搭配使用

var arr=[1,2,3,4];
arr.name='zhangsan'

for(var i in arr){
    console.log(arr[i]);
}

for(var item of arr){
    console.log(item);
}

//for..in会遍历出后添加的自定义属性,但是for..of只可以循环可迭代的可迭代属性,不可迭代属性在循环中被忽略了
//迭代?
//可迭代对象是包含Symbol.iterator属性的对象,这个Symbol.iterator属性对应着能够返回该对象的迭代器的函数
//在ES6中,所有的集合对象(数组,Set和Map)以及字符串都是可迭代对象,可迭代对象可以与ES6中新增的for..of

4.forEach

var arr=[1,2,3,4];
//element 表示arr的单元项,index 表示arr单元项对应的索引值
arr.forEach(function(element,index){
    console.log(element+'-'+index);
})

//未赋值的值是不会在foreach循环迭代的,但是手动赋值为undefined的元素是会被列出的
//例如:' '

5.map

var arr=[1,2,3,4];
//callback对数组元素进行操作,并将所有操作结果放入数组中并返回该数组
var arr2=arr.map(function(item){
    return item.toUppercase();
})

console.log(arr2);

6.filter

//返回一个包含所有在回调函数上返回为true的元素新数组,回调函数在此担任的是过滤器的角色,当元素符和条件,过滤器就返回true,filter则会返回所有符合过滤条件的元素
var arr=[1,2,3,4];
var arr2=arr.filter(function(item){
    if(item>2){
        return item;
    }
})
console.log(arr2);

7.every

//当数组中的每一个元素在callback上被返回true时就返回true(注意:要求每一个单元项都返回true时才为true)
var arr=[1,2,3,4];
var arr1=arr.every(function(item){
    if(item>0){
        return item;
    }
})

console.log(arr1) //true

8.some

//只要数组中有一项在callback上就返回true
var arr=[1,2,3,4];
var arr1=arr.some(function(item){
    if(item>3){
        return item;
    }
})

console.log(arr1); //true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值