在 ES7 中,JavaScript 引入了两个新的方法 Object.values()
和 Object.entries()
,它们可以帮助开发者更方便地处理对象。
Object.values()
Object.values()
方法返回一个给定对象自身可枚举属性的值数组,值的顺序与使用 for...in
循环遍历该对象时返回的顺序一致。
这个方法可以用于获取对象的所有值,例如:
const obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj); console.log(values); // [1, 2, 3]
Object.entries()
Object.entries()
方法返回一个给定对象自身可枚举属性的键值对数组,键值对的顺序与使用 for...in
循环遍历该对象时返回的顺序一致。
这个方法可以用于获取对象的所有键值对,例如:
const obj = { a: 1, b: 2, c: 3 }; const entries = Object.entries(obj); console.log(entries); // [['a', 1], ['b', 2], ['c', 3]]
应用场景
1. 遍历对象
使用 Object.values()
和 Object.entries()
方法可以更方便地遍历对象,而不需要使用 for...in
循环。
const obj = { a: 1, b: 2, c: 3 }; for (const value of Object.values(obj)) { console.log(value); // 1, 2, 3 } for (const [key, value] of Object.entries(obj)) { console.log(key, value); // a 1, b 2, c 3 }
2. 查找对象值
使用 Object.values()
方法可以方便地查找对象中是否存在某个值。
const obj = { a: 1, b: 2, c: 3 }; const hasValue = Object.values(obj).includes(2); console.log(hasValue); // true
3. 对象转换为 Map
使用 Object.entries()
方法可以方便地将对象转换为 Map。
const obj = { a: 1, b: 2, c: 3 }; const map = new Map(Object.entries(obj)); console.log(map); // Map { 'a' => 1, 'b' => 2, 'c' => 3 }
4. 对象浅拷贝
使用 Object.assign()
方法可以实现对象浅拷贝。结合 Object.entries()
和 Object.fromEntries()
方法,我们可以方便地实现深拷贝。
const obj = { a: 1, b: { c: 2 } }; const entries = Object.entries(obj); const copy = Object.fromEntries(entries); console.log(copy); // { a: 1, b: { c: 2 } }
总结
Object.values()
和 Object.entries()
方法是 ES7 中新增的两个方法,它们可以帮助开发者更方便地处理对象。这两个方法可以用于遍历对象、查找对象值、对象转换为 Map、对象浅拷贝等场景。在开发过程中,我们应该根据具体场景选择合适的方法,提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6555fea5d2f5e1655d0729e8