JS中for in 与 for of
// 数组
var A=[4,6,74,67];
for in:拿到的是数组下标
for (let i in A){ console.log(i); }
//0,1,2,3
for of:拿到的是数组元素
for (let i of A){ console.log(i); }
字符串
var str="hellllo world";
for in:拿到的是字符串下标
for (let i in str){ console.log(i) } //0 1 2 3 4 5 6 7 8 9 10 11 12
for of:拿到的是字符串中的字符
for (let i of str){ console.log(i); } // h e l l l l o w o r l d
set 和 map:不能使用for in (没有下标)
可以使用for of (可迭代对象)
var s=new Set([1,3,6,5,4,3]);
for (let i of s){
console.log(i);
}
// 1 3 6 5 4
let map = new Map([["name","nick"],["age",25]]); //Map(2) {"name" => "nick", "age" => 25}
for (let i of map){ console.log(i); } // ["name", "nick"] // ["age", 25]
对象不是可迭代对象,所以不能对其使用for of
var obj={ name:'alex', age:20 };
但可以使用for in:拿到的是对象的属性名
for (let i in obj){ console.log(i); } // name // age
获取对象的属性名
方法二:Object.keys(obj)
Object.keys(obj).forEach(item => {
console.log(item);
});