ECMAScript 2017 之 Object.entries() and Object.values()
发布:elantion 日期:2019-04-14 阅读:1007 评论:0
遍历对象在以前是比较麻烦的事,能使用的方法比较少,例如: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