在 ES8 中,JavaScript 引入了两个非常实用的方法,分别是 Object.values()
和 Object.entries()
。它们可以让我们更方便地获取对象的属性值和键值对。本文将详细介绍它们的具体用法及注意事项。
Object.values()
Object.values()
方法返回一个数组,数组中包含了对象自身的所有属性的值,其值的顺序与使用 for...in
循环遍历对象时返回的属性值的顺序相同。如果对象属性有 Symbol 类型的值,Object.values() 会忽略这些值。
const obj = { x: 1, y: 2, z: 3 }; const values = Object.values(obj); console.log(values); // [1, 2, 3]
可以看出,Object.values()
方法非常方便,我们可以不用遍历整个对象来获取所有属性的值。
Object.entries()
Object.entries()
方法也返回一个数组,其中包含了对象自身的所有属性的键值对。数组中的每个元素都是一个长度为 2 的数组,第一个元素表示属性名称,第二个元素表示属性值。
const obj = { x: 1, y: 2, z: 3 }; const entries = Object.entries(obj); console.log(entries); // [["x", 1], ["y", 2], ["z", 3]]
可以看出,Object.entries()
方法非常方便,我们可以不用遍历整个对象来获取所有属性的键值对。
注意事项
虽然 Object.values()
和 Object.entries()
非常实用,但在使用时需要注意以下几点:
- 仅支持现代浏览器:
Object.values()
和Object.entries()
仅在现代浏览器上得到支持,如果你需要兼容旧版浏览器,可能需要使用第三方库或手写相应的代码。 - 遍历顺序与 for...in 相同:使用
Object.values()
和Object.entries()
方法返回的结果与使用for...in
循环遍历对象时返回的结果的顺序相同,因此在需要保证顺序的情况下可以使用这些方法。 - 忽略 Symbol 类型的属性值:这两个方法会忽略对象属性值为 Symbol 类型的属性。
示例代码
下面是一个简单的示例代码,展示如何使用 Object.values()
和 Object.entries()
方法:
-- -------------------- ---- ------- ----- --- - - ----- ------------- ---- --- ------- - ---------- -------------- ------- ------- ------ --------- ------ ---------- - -- -- ---------- ----- ------ - ------------------- -- -------------- --- - ---------- -------------- ------- ------- ------ --------- ------ ---------- -- -- ---------- ----- ------- - -------------------- -- --------- -------------- ------- ---- ---------- - ---------- -------------- ------- ------- ------ --------- ------ ---------- ---
总结:ES8 中的 Object.values() 和 Object.entries() 方法可以大大简化获取对象属性值及属性的键值对的操作,这两个方法非常实用,但在使用时要注意一些细节问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6493732f48841e9894121ce5