ES8 中对象的 entries() 和 values() 方法是对 ES6 对象扩展的一种补充,它们都能够实现对对象的遍历操作,但是它们之间还存在一些差异。在本文中,我们将详细探讨这两种方法的区别以及它们的应用场景。
entries() 方法
entries() 方法可以将对象转换为一个键值对的数组,其中每个数组元素表示对象的一个键值对,一般使用 for...of 循环进行遍历。
const obj = { name: 'Tom', age: 20, gender: 'male' }; const entriesObj = Object.entries(obj); for (const [key, value] of entriesObj) { console.log(`${key}: ${value}`); }
输出结果为:
name: Tom age: 20 gender: male
values() 方法
values() 方法可以将对象转换为一个值的数组,其中每个数组元素表示对象的一个值。同样,一般使用 for...of 循环进行遍历。
const obj = { name: 'Tom', age: 20, gender: 'male' }; const valuesObj = Object.values(obj); for (const value of valuesObj) { console.log(value); }
输出结果为:
Tom 20 male
区别
从上面的示例可以发现,entries() 方法返回一个键值对的数组,而 values() 方法返回一个值的数组,它们之间的主要区别在于:
- entries() 方法会将对象中的键值对组合成一个二维数组,每个数组元素为一个键值对,其中第一个元素为键名,第二个元素为键值。
- values() 方法只返回对象中的值的数组,其中不包含键值对的键名。
应用场景
entries() 和 values() 方法在实际开发中的应用场景是类似的。它们都能很方便地将一个对象中的所有值转换成数组。
entries() 方法适用于需要对对象中的所有键值对进行操作的场景,比如对一个 JSON 数据进行扁平化处理,需要将所有的键值对都遍历一遍。在这种场景下,entries() 方法可以将对象中的所有键值对转换成一个数组进行处理。
values() 方法适用于需要对对象中的所有值进行操作的场景,比如求一个数组中最大和最小的数值。在这种场景下,values() 方法可以将对象中的所有值转换成一个数组进行处理。
结论
由于 entries() 和 values() 方法都能够将对象中的每个属性值转换成一个数组元素,因此我们可以根据需要,灵活使用这两种方法。同时,我们也要注意它们的区别,避免在错误的场景中应用错误的方法,导致不必要的程序错误。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/672ed297eedcc8a97c8aef40