ES2018 中的膜拜 Object.entries() 和 Object.values()

在 ES2018 中,Object.entries() 和 Object.values() 被引入,作为 Object 对象的两个新方法。它们提供了更方便快捷的方式来获取对象的键值对和值数组,拓展了对象操作的能力。

Object.entries()

Object.entries() 方法返回一个包含对象自身可枚举属性的键值对数组,其顺序与 for...in 循环遍历的顺序一致(区别在于for...in 循环不仅能遍历对象自身属性,而且能遍历继承自原型链中的属性)。

语法如下:

其中 obj 为对象,返回一个数组,数组中每一项均为一个包含键值对的数组。

下面是一个实际用途的例子,展示如何解决循环中使用 delete 关键字问题:

let obj = { first_name: 'John', last_name: 'Doe', age: 21 };
for (let [key, value] of Object.entries(obj)) {
    console.log(`${key}: ${value}`);
    if (key === 'age') {
        delete obj[key];
    }
}
console.log(obj); // { first_name: 'John', last_name: 'Doe' }

Object.values()

Object.values() 方法与 Object.entries() 方法的语法相似,只是它返回的是一个包含对象自身可枚举属性的值数组。

Object.values(obj)

下面是一个根据对象属性值来查找对象具体属性的例子,演示了 Object.values() 的使用方法:

let obj = { a: 100, b: 200, c: 300 };
let val = 200;
let key = Object.keys(obj).find(key => obj[key] === val);
console.log(key); // 'b'

总结

Object.entries() 和 Object.values() 这两个方法的加入使操作对象更加便捷。以前是要遍历整个对象,才能完成类似的操作,而现在不但代码简洁、可读性更强,而且使用起来非常方便。特别是在需要删除对象属性或者查找对象属性值的情况下,使用这两个方法会更具优势。与其他语言的方法相比,这两个方法的功能是非常完整的,使用频率非常高。

总的来说,Object.entries() 和 Object.values() 方法的加入,拓展了 JavaScript 的语言能力,使得开发者能够以更高效、更方便的方式操作对象,减少不必要的代码,提升开发效率。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65b8ab80add4f0e0ff13fd07