ES7 中的 Object.entries() 和 Object.values() 方法

在 ES7 中,一个新的 Object 对象方法被引入,分别是 Object.entries() 和 Object.values() 方法。这两个方法都可以从一个对象中获取值,而不需要使用传统的 for-in 循环。

Object.entries() 方法

Object.entries() 方法将对象转换为其键值对的数组。该数组中的每一个元素都包含一个键和一个对应的值。下面是一个简单的例子:

const object1 = {
  a: 'somestring',
  b: 42
};

console.log(Object.entries(object1));
// expected output: [["a", "somestring"], ["b", 42]]

可以看到,Object.entries() 方法将原对象中的每一个属性都转换为一个包含键和值的数组。

还可以使用此方法来迭代对象中的属性,例如使用 Array.prototype.forEach() 方法来遍历数组中的每一个元素:

const obj = { foo: 'bar', baz: 42 };
Object.entries(obj).forEach(([key, value]) => {
  console.log(`${key}: ${value}`);
});
// expected output:
// "foo: bar"
// "baz: 42"

此外,还可以使用 Object.entries() 方法来将对象转换为 Map 对象:

const obj = { foo: 'bar', baz: 42 };
const map = new Map(Object.entries(obj));
console.log(map.get('foo')); // expected output: "bar"

Object.values() 方法

Object.values() 方法返回一个对象自身属性的所有值,而不包括其原型上的属性。下面是一个简单的例子:

const obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // expected output: ["bar", 42]

可以看到,Object.values() 方法将每一个属性的值分别提取出来,并返回一个值的数组。

同样,Object.values() 方法也可以用于迭代一个对象的属性:

const obj = { foo: 'bar', baz: 42 };
Object.values(obj).forEach(value => {
  console.log(value);
});
// expected output:
// "bar"
// 42

需要注意的是,如果一个对象不包括任何属性,则 Object.values() 方法将返回一个空数组:

const obj = {};
console.log(Object.values(obj)); // expected output: []

总结

ES7 中的 Object.entries() 和 Object.values() 方法都可以让我们更方便地访问对象中的属性和值。了解这两个方法可以帮助开发人员更好地遍历和处理 JavaScript 对象。

需要注意的是,这两个方法目前在不同的浏览器中的支持情况可能不同。在使用这些方法之前,建议先检查它们的支持情况,或使用其它方法来完成相同的操作。

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