总结遍历数组的方法
let arr=[1,3,6,8];
- 方法1:
for(let i=0,len=arr.length;i<len;i++){
console.log(arr[i]);
}
- forEach
arr.forEach((item,index,array)=>{
console.log(item);
})
- map
arr.map((item,index,array)=>{
return item
})
- for in
for(i in arr){
console.log(1);//0,1,2... 数组下标
}
- for of
for(item of arr){
console.log(item);//1,3,6...
}
for(item of arr.values()){
console.log(item);//1,3,6...
}
for(key of arr.keys()){
console.log(key);//0,1,2...
}
for(entry of arr.entries()){
console.log(entry);//[0,1],[1,3],[2,6],...
}
- iterator (next()方法 两个属性 done, value)
1.values
var val=arr.values();
var values;
while(!(values=val.next()).done){
console.log( values.value);//1,3,6...
}
2.keys
var key=arr.keys();
var keys;
while(!(keys=key.next()).done){
console.log(keys.value);//0,1,2...
}
3.entries
var entry=arr.entries();
var entries;
while(!(entries=entry.next()).done){
console.log(entries.value);//[0,1],[1,3],...
}
- Array-Like
1. use spread syntax (...);
let arr=[...NodeList];
2.Array.form();
var arr=Array.form(NodeList);
3.slice();
let arr=Arrya.prototype.slice().call(NodeList);;
4.forEach;
Array.prototype.forEach.call(NodeList,(item,index,arr)=>{
});
5.for of
for... in /for ... of 区别
参考一篇博客https://www.zhangxinxu.com/wordpress/2018/08/for-in-es6-for-of/
博客的总结语:对于纯对象的遍历for..in要厉害一些;对于数组遍历,如果不需要知道索引,for..of迭代更合适,因为还可以中断;如果需要知道索引,则forEach()更合适;对于其他字符串,类数组,类型数组的迭代,for..of优势非常明显。