在 ES8/ES2017 中,JavaScript 引入了两个新的方法 Object.values 和 Object.entries,它们可以方便地将对象转换为数组,并且可以实现可迭代对象,使得我们能够更方便地对对象进行遍历和操作。
Object.values
Object.values 方法可以将对象的值转换为数组。它接受一个对象作为参数,返回一个包含该对象所有可枚举属性的值的数组。
const obj = { a: 1, b: 2, c: 3 }; const values = Object.values(obj); console.log(values); // [1, 2, 3]
Object.values 可以很方便地将对象的值转换为数组,这在我们需要对对象进行遍历或者操作时非常有用。
Object.entries
Object.entries 方法可以将对象转换为数组,其中每个元素都是一个包含键值对的数组。它接受一个对象作为参数,返回一个包含该对象所有可枚举属性的键值对数组。
const obj = { a: 1, b: 2, c: 3 }; const entries = Object.entries(obj); console.log(entries); // [['a', 1], ['b', 2], ['c', 3]]
Object.entries 可以很方便地将对象转换为数组,并且每个元素都是一个包含键值对的数组。这在我们需要对对象进行遍历或者操作时非常有用。
实现可迭代对象
在 JavaScript 中,如果一个对象实现了 Symbol.iterator 方法,那么它就是可迭代的。可迭代对象可以使用 for...of 循环进行遍历。
我们可以使用 Object.entries 方法来实现一个可迭代对象,它可以将对象转换为一个包含键值对的数组,并且实现 Symbol.iterator 方法,使得我们可以使用 for...of 循环遍历该对象。
// javascriptcn.com 代码示例 const obj = { a: 1, b: 2, c: 3 }; obj[Symbol.iterator] = function* () { yield* Object.entries(this); }; for (const [key, value] of obj) { console.log(`${key}: ${value}`); } // a: 1 // b: 2 // c: 3
上面的代码中,我们先使用 Object.entries 方法将对象转换为一个包含键值对的数组,然后实现 Symbol.iterator 方法,使用生成器函数 yield* 来迭代该数组。
总结
ES8/ES2017 中的 Object.values 和 Object.entries 方法可以方便地将对象转换为数组,并且实现可迭代对象,使得我们能够更方便地对对象进行遍历和操作。我们可以使用 Object.entries 方法来实现一个可迭代对象,使得我们可以使用 for...of 循环遍历该对象。这些新特性为我们的开发带来了很大的便利,让我们更加高效地编写代码。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/656059fcd2f5e1655da88f16