数组遍历方法

用for of遍历

与for in区别:

  1. for of无法循环遍历对象
  2. for in可以遍历对象
var arr = [
    { name:'nick', age:18 },
    { name:'freddy', age:24 },
    { name:'mike', age:26 },
    { name:'james', age:34 }
];
for(var item of arr){	
    console.log(item.name,item.age);
}

用for in 遍历

使用情况:

  1. 相较于for循环,for in的功能会更加强大一些,使用范围也会更广,不但可以循环遍历数组,还可以循环遍历对象。代码中的index,key1,key2分别是目标对象(数组)中的键值(数组中叫习惯叫索引)。arr数组中的index分别0,1,2,3,userMsg对象下的key1分别是"nick"、"freddy"的键值, key2就是userMsg.nick和userMsg.freddy下的键值了,为"name"、"age"、"sex"。
var arr = ['nick','freddy','mike','james'];
var userMsg = {
    nick: {
	name: 'nick',
	age: 18,
	sex: '男'	
    },
    freddy: {
	name: 'freddy',
	age: 24,
	sex: '男'
    }	
};
 
for(var index in arr){	
    console.log(index +'. ' + arr[index]);
}
console.log('-----------分割线-----------');
for(var key1 in userMsg){
    console.log(key1);	
    for(var key2 in userMsg[key1]){
	console.log(key +': ' + userMsg[key1][key2]);
    }
}

  1. 对象
    使用方法:
 for(var key in obj)
 {    
       key //当前属性名   
     obj[key]  //当前属性值
     }

用forEach遍历

使用情况:

  1. forEach循环,跟for循环有点相似,不过会更优美,可通过参数直接获取到值,arr.forEach(function(item,index,arr){}),其中item为该索引下的值,index为索引,arr为数字本身,参数名可改变,但是顺序不能改变。
var arr = ['nick','freddy','mike','james'];
arr.forEach(function(item,index,arr){
    console.log(item);
    console.log(index);
    console.log(arr);
});

filter过滤器

遍历一个数组并返回一个新数组,并且不影响原数组。遍历数组每一项,回调函数返回true,就把这一项添加到新数组中。其中回调函数中有三个参数,(value,index,array),value是每一项,index是索引,array是当前被遍历的数组

注:filter不会对空数组进行检测,filter不会改变原数组

map映射

map映射会去遍历数组每一项,但是不会改变元素组,同filter一样返回一个新数组,回调函数返回什么就是什么,对应的新数组的那一项就会是什么。

map 与 filter的区别,map返回的新数组与原数组的长度是一样的,是对数组每一项进行操作,返回每一项结果,而filter是返回我们需要的项(就是过滤掉我们不要的项);

map 与forEach的区别:map有返回值,forEach没有返回值

map与forEach的相同点:都只能遍历数组,参数都相同

reduce

 reduce()方法接收一个函数作为累加器,数组中的每一个值(从左到右)开始缩减,最终计算为一个值。

  注:reduce()对于空数组是不会执行回调函数的。

发表评论 / Comment

用心评论~