ES6 —— keys()、values()、entries()

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转换为Mapnew 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是不支持的

你可能感兴趣的:(ES6 —— keys()、values()、entries())