ECMAScript 2018 (ES9) 是 JavaScript 语言的一个新版本,推出了一些有趣的新特性。其中最有用的是 Object.entries() 和 Object.values()。这两个方法使我们可以更轻松地操作对象,使我们的代码更加简洁和易于维护。
Object.entries()
Object.entries() 方法返回一个给定对象的自身可枚举属性键值对数组。这意味着它可以让我们轻松地遍历对象,而不必使用 for...in 循环。
用法
const obj = { a: 1, b: 2, c: 3 }; const entries = Object.entries(obj); console.log(entries); // output: [ [ 'a', 1 ], [ 'b', 2 ], [ 'c', 3 ] ]
在这个示例中,我们将一个对象传递给 Object.entries() 方法。然后,它返回一个数组。这个数组包含键值对,每个键值对都是一个数组。第一个元素是属性名,第二个元素是属性值。
示例: 从对象创建 URL 查询字符串
使用 Object.entries() 方法,我们可以轻松地将对象转换为 URL 查询字符串。例如,我们可以编写以下函数:
function encodeQueryData(data) { const query = Object.entries(data) .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`) .join('&'); return query; }
这个函数接收一个对象作为参数,并返回一个 URL 查询字符串。它使用 map() 从对象创建一个数组,每个数组元素都是一个键值对字符串。然后,它使用 join() 方法将数组转换为单个字符串。
示例: 简化对象值的合并
使用 Object.entries() ,我们可以更轻松地合并两个对象的值。例如,假设有两个对象 a 和 b,我们想要合并它们的值。我们可以这样做:
const a = { x: 1, y: 2 }; const b = { y: 3, z: 4 }; const merged = Object.fromEntries([...Object.entries(a), ...Object.entries(b)]); console.log(merged); // output: { x: 1, y: 3, z: 4 }
在这个示例中,我们使用 ... 运算符将两个对象的 Object.entries() 数组合并。然后,我们使用 Object.fromEntries() 将新的数组转换为对象。Object.fromEntries() 方法接收一个键值对数组,然后返回一个新的对象。
Object.values()
Object.values() 方法返回一个给定对象的所有自身可枚举属性的值的数组。它使我们可以轻松地获取对象中的所有值。使用它,我们可以轻松地执行各种操作,例如计算对象的总和或平均值。
用法
const obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj); console.log(values); // output: [1, 2, 3]
在这个示例中,我们将一个对象传递给 Object.values() 方法。它返回一个包含对象值的数组。
示例: 计算对象值的总和
使用 Object.values() 方法,我们可以轻松地计算对象值的总和。例如,假设我们有一个包含销售额的对象:
const sales = { jan: 100, feb: 150, mar: 200 }; const total = Object.values(sales).reduce((prev, curr) => prev + curr, 0); console.log(total); // output: 450
在这个示例中,我们使用 Object.values() 方法获取一个包含每个月销售额的数组。然后,我们使用 reduce() 方法将它们添加起来。
总结
Object.entries() 和 Object.values() 是两个强大的工具,可以使我们更轻松地操作对象。通过了解它们的用法和示例,我们可以更好地利用这些新特性。它们在写更简洁、更流畅的代码方面将带来更大的作用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64dde55bf6b2d6eab392f509