数组中用于遍历的方法
一,for循环
语法:for(let ; ; )
二,for in:常用与遍历对象
语法:for( let i in obj)
三,forEach()
作用:调用数组中的每个元素,并将元素传递给回调函数进行执行,无返回值。
语法:array.forEach(function(currentValue, index, arr));
四,for of:用于遍历值
语法:
for (var value of arr){
console.log(value);
}
注意:for in和for of的区别
for in遍历下标,for of遍历值。
五,map()
作用:用于处理数组,并用return返回结果,结果组成一个新的数组返回。
语法:arr.map(function(value,key,arr){
...
})
六,filter()
作用:是一个过滤函数,需要在循环的时候判断一下是true还是false,是true才会返回原本数组的这个元素。
语法:
let arr1 = [1,2,3];
let arr2 = arr1.filter((value,key,arr) => {
console.log(value) // 1,2,3
console.log(key) // 0,1,2
console.log(arr) // [1,2,3]
return value >= 3 ? false : true;
})
console.log(arr1); // [ 1, 2, 3 ]
console.log(arr2); // [ 1, 2 ]
注意:
数组利用filter加上箭头函数去重
let arr = [1, 2, 2, 3, 4, 5, 5, 6];
let newArr = arr.filter((x, index,self)=>self.indexOf(x)===index)
console.log(newArr)
七,some():
和filter功能相同,不同的是,它返回boolean值,用于检查数组中是否存在某对象.
语法:
if (arr.some(list => list.value === 1)) {
console.log('执行了!')
}
ES6的三个新方法:entries(),keys()和values() —— 用于遍历对象,它们都返回一个遍历器对象,可以和for...of循环进行组合,唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。
一,keys():遍历对象的键值,返回一个由键值组成的数组。
作用:获取对象的键值,并返回一个数组。
语法:
let obj = { a: 1, b: 2, c: 3 };
for (let key of Object.keys(obj)) {
console.log(key); // 'a', 'b', 'c'
}
var obj1 = {"name":"lucas","age":22};
console.log(Object.keys(obj1)) //["name", "age"]
二,values()遍历对象的值,并作为数组返回。
作用:获取对象的值,并作为数组返回。
语法:
let obj = { a: 1, b: 2, c: 3 };
for (let value of Object.values(obj)) {
console.log(value); // 1, 2, 3
}
var obj1 = {"name":"lucas",age:22};
console.log(Object.values(obj1)) //["lucas", 22]
三,entries(),entries方法的一个用处是,将对象转为真正的Map结构。
entries()函数会将 key 和 value 以二维数组的形式都返回。
作用:初始化map结构的时候,可以作为输入。
语法:
var obj2 = {foo:'bar',baz:42};//普通对象
var map2 = new Map(Object.entries(obj2));//entries()处理对象为二维数组并作为map的初始化值。
console.log(map2); //map{"foo" => "bar", "baz" => 42}
补充:
map数据结构是一种对象的解构,对象中的键不再只是字符串,而是任意的数据类型都可以当键,是一种广义的键。
声明map解构:
let m = new Map();//map数据结构有四种方法,set,get,has,delete
m.set(123,'abc');//添加键值对
console.log(m.get(123));//获取值
m.has(123);//-->true查找对象中是否有
m.delete(123);//删除123键值对,成功删除返回true,失败返回false