在 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