ECMAScript 2017 之 Object.entries() and Object.values()

发布:elantion 日期:2019-04-14 阅读:43 评论:0

遍历Json对象在以前是比较麻烦的事,能使用的方法比较少,例如:for in, Object.keys等,写起来比较冗余,其中我比较喜欢Object.keys,像这样:

const obj = { a: 1, b: 2 };

Object.keys(obj).forEach( key => {
    const value = obj[key];
        console.log( key, value);
});

写起来其实也不怎么复杂,就是遍历过程中多了些不必要的步骤。到了 ECMAScript 2017 终于有非常简洁方便的方法代替,就是 Object.entries()Object.values()

Object.entries()

先来看看 Object.entries(),它可以非常方便地取出对象的键值。

Object.entries( obj ).forEach(([key,value]) => {
    console.log(key, value); 
});

大家是不是很兴奋?现在我们终于有了遍历对象的方法,而不是仅数组专有了。要注意的是,如果对象的键包含 Symbol,它返回的只有值,没有键名。例如:

Object.entries({ [Symbol()]: 123, foo: 'abc' });
// [ [ 'foo', 'abc' ] ]

它也可以很方便地创建 Map 对像:

let map = new Map(Object.entries({
    one: 1,
    two: 2,
}));
console.log(JSON.stringify([...map]));
// [["one",1],["two",2]]

Object.values()

注意这是values,有个s,不要跟value函数搞混了,两个完全不一样的功能。 Object.values()可以非常方便地取出键值对像的值,如果键名对你来说不重要,那么这个方法就很实用了,我们省去了取键名的步骤。

Object.values({ one: 1, two: 2 })
// [ 1, 2 ]

参考来源

http://exploringjs.com/es2016-es2017/ch_object-entries-object-values.html