Array 数组遍历
while
let arr=[4,3,2,1];
let len=arr.length;
let i=0;
while(i<len){
console.log(i,arr[i++]);
}
for
let arr=[4,3,2,1];
for(let i=0,len=arr.length;i<len;i++){
console.log(i,arr[i]);
}
forEach
let arr=[4,3,2,1];
arr.forEach((item,i)=>console.log(i,item));
for...in
let arr=[4,3,2,1];
for(let i in arr){console.log(i,arr[i])}
for...of
let arr=[4,3,2,1];
for(let item of arr){console.log(item)}
map 等...严格来说不算遍历了
let arr=[4,3,2,1];
arr.map((item,index)=>console.log(index,item))
Object 对象遍历
for...in
for...in语句以任意顺序遍历一个对象的可枚举属性。对于每个不同的属性,语句都会被执行。
let obj={a:4,b:3,c:2,d:1};
for(let i in obj){console.log(i,obj[i])}
Object.keys/Object.values()/Object.entries()
let obj={a:4,b:3,c:2,d:1};
Object.keys(obj) //["a", "b", "c", "d"]
Object.values(obj) //[4, 3, 2, 1]
Object.entries(obj) //[["a", 4],["b", 3],["c", 2],["d", 1]]
对于数组for of/for in
Object.prototype.objCustom = function() {};
Array.prototype.arrCustom = function() {};
let iterable = [3, 5, 7];
iterable.foo = 'hello';
for (let i in iterable) {
console.log(i); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
}
for (let i in iterable) {
if (iterable.hasOwnProperty(i)) {
console.log(i); // logs 0, 1, 2, "foo"
}
}
for (let i of iterable) {
console.log(i); // logs 3, 5, 7
}
网友评论