在 ECMAScript 2017(也称为 ES8)中引入了两个新的 Object 方法:Object.entries()
和 Object.values()
。这两个方法在处理对象上具有强大的功能性,本文将对它们进行详细的介绍,并带有示例代码。
Object.entries()
Object.entries()
方法返回一个给定对象自身可枚举属性的键值对数组,其排列顺序与使用 for...in
循环的顺序相同(区别于 Object.getOwnPropertyNames()
方法)。
语法如下:
Object.entries(obj);
其中,obj
为要处理的对象。
返回值是一个数组,其中包含具有两个元素的子数组。每个子数组都表示对象的一对键值对,其中第一个元素是键名,第二个元素是对应的键值。
以下是一个示例:
const obj = { foo: 'bar', baz: 42 }; const entries = Object.entries(obj); console.log(entries); // output: [["foo", "bar"], ["baz", 42]]
在上面的示例中,Object.entries()
方法返回了一个包含数组 ["foo", "bar"]
和数组 ["baz", 42]
的数组。
我们也可以使用 Object.entries()
方法来遍历一个对象:
for (const [key, value] of Object.entries(obj)) { console.log(`${key}: ${value}`); } // output: "foo: bar" "baz: 42"
Object.values()
Object.values()
方法返回一个给定对象自身可枚举属性的值数组,其排列顺序与使用 for...in
循环的顺序相同(区别于 Object.getOwnPropertyNames()
方法)。
语法如下:
Object.values(obj);
其中,obj
为要处理的对象。
返回值是一个数组,其中包含对象的值。
以下是一个示例:
const obj = { foo: 'bar', baz: 42 }; const values = Object.values(obj); console.log(values); // output: ["bar", 42]
在上面的示例中,Object.values()
方法返回了一个包含值 "bar"
和值 42
的数组。
我们也可以使用 Object.values()
方法来遍历一个对象:
for (const value of Object.values(obj)) { console.log(value); } // output: "bar" 42
应用场景
Object.entries()
和 Object.values()
方法可以帮助我们轻松地获取对象自身属性的键名、键值或者同时获取这两个值。
其中,Object.entries()
方法将一个对象转换为数组更有适用性。可以方便地处理对象中的键值对,这对于一些需要进行大量配置的模块特别有用。
接下来是使用 Object.entries()
和 Object.values()
方法的两个实际例子:
根据对象的值获取键名
-- -------------------- ---- ------- ----- --- - - ------ ------ ------- ------ ------ ----- -- ----- ----- - ------ -------- ------------------ ------ - ------ ------------------------- -- -------- --- ------- - ------------------------------ -------- -- ------- --------
在上面的示例中,我们使用 Object.keys()
方法获取对象的键名数组,并对其进行遍历,最后使用 Object.keys().find()
方法来查找与给定值相符的键名。
将对象转换为 URL 查询字符串
const obj = { foo: 'bar', baz: 42 }; const queryString = Object.entries(obj).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join('&'); console.log(queryString); // output: "foo=bar&baz=42"
在上面的示例中,我们使用 Object.entries()
方法来将对象转换为可迭代的键值对数组,然后使用 Array.map()
方法来遍历这个数组并将数组中的每个子数组转换为 URL 查询字符串格式。最后使用 Array.join()
方法来将所有子字符串转换为完整的查询字符串。
结论
Object.entries()
和 Object.values()
方法在处理常规对象和数组时非常有用。这些方法可以帮助我们更轻松地处理对象甚至降低代码的复杂度。因此我们应该熟练掌握这两种方法的使用,以便于更高效地开发以及更高效地利用这些基础特性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67184e2ead1e889fe229c756