ES6 提供三个新的方法 —— entries(),keys()和values() —— 用于遍历数组,它们都返回一个遍历器对象,可以用for...of循环进行遍历。
keys()是对键名的遍历
let obj = {
0: 'a',
1: 'b',
2: 'c'
};
for (let key of Object.keys(obj)) {
console.log(key); // 0,1,2
}
// for of不支持遍历普通对象,可通过与Object.keys()搭配使用遍历
console.log(Object.keys(obj)) //(3) ["0", "1", "2"]
values()是对键值的遍历
let obj = {
0: 'a',
1: 'b',
2: 'c'
};
for (let key of Object.values(obj)) {
console.log(key); // 'a', 'b', 'c'
}
console.log(Object.values(obj)) //["a", "b", "c"]
entries()是对键值对的遍历
let obj = {
0: 'a',
1: 'b',
2: 'c'
};
for (let key of Object.entries(obj)) {
console.log(key);
//(2) ["0", "a"]
//(2) ["1", "b"]
//(2) ["2", "c"]
}
console.log(Object.entries(obj))
// [Array(2), Array(2), Array(2)]
// 0: (2) ["0", "a"]
// 1: (2) ["1", "b"]
// 2: (2) ["2", "c"]
entries方法还有个用法就是:将Object
转换为Map
new Map()
构造函数接受一个可迭代的entries
。借助Object.entries
方法你可以很容易的将Object
转换为Map
:
let obj = {
name: "daisy",
age: 25
};
let map = new Map(Object.entries(obj));
console.log(map); // Map { name: "daisy", age: 25 }
这三个方法要注意浏览器兼容性IE是不支持的