在 ES9 中,新增了一些修改器方法,可以让我们更加便捷地操作数组和对象。
Object.fromEntries()
在 ES6 中,我们已经学会了使用 Object.entries()
方法将对象转换为键值对数组,例如:
const obj = { a: 1, b: 2 } const entries = Object.entries(obj) // [['a', 1], ['b', 2]]
那么,在 ES9 中,我们就可以使用 Object.fromEntries()
方法将键值对数组转换为对象:
const entries = [['a', 1], ['b', 2]] const obj = Object.fromEntries(entries) // { a: 1, b: 2 }
这样我们就可以非常方便地将键值对数组转换为对象了。
Array.prototype.flat()
在 ES6 中,我们已经学会了使用 concat()
和 apply()
方法将嵌套的数组展开,例如:
const arr = [1, [2, 3], [4, [5, 6]]] const flattened = [].concat.apply([], arr) // [1, 2, 3, 4, 5, 6]
在 ES9 中,我们可以使用 Array.prototype.flat()
方法更加简单地实现这个功能:
const arr = [1, [2, 3], [4, [5, 6]]] const flattened = arr.flat() // [1, 2, 3, 4, 5, 6]
同时,Array.prototype.flat()
方法还支持传入一个深度参数,用于指定展开的深度,默认为 1,例如:
const arr = [1, [2, [3, [4, [5]]]]] const flattened = arr.flat(Infinity) // [1, 2, 3, 4, 5]
Array.prototype.flatMap()
在 ES9 中,新增了一个 Array.prototype.flatMap()
方法,用于通过对每个元素进行映射,然后将结果压缩成一个新数组。
例如,我们有一个数组 [1, 2, 3]
,现在我们希望将每个元素都加倍,然后将结果组成一个新的数组。
在 ES6 中,我们可以使用 Array.prototype.map()
和 Array.prototype.concat()
方法来实现:
const arr = [1, 2, 3] const doubled = arr.map(x => [x * 2]).concatAll() // [2, 4, 6]
在 ES9 中,我们可以使用 Array.prototype.flatMap()
方法更加方便地实现这个功能:
const arr = [1, 2, 3] const doubled = arr.flatMap(x => [x * 2]) // [2, 4, 6]
注意,Array.prototype.flatMap()
方法与 Array.prototype.map()
方法的区别在于,flatMap()
方法会去掉结果中的空元素,例如:
const arr = [1, 2, 3] const flatMapped = arr.flatMap(x => [[x * 2]]) // [2, 4, 6]
总结
本文介绍了 ES9 中的三个修改器方法:Object.fromEntries()
、Array.prototype.flat()
和 Array.prototype.flatMap()
。这些方法能够在操作对象和数组时提供更加便利的方式,同时也能够让代码更加简洁易读。我们应该善于使用这些方法,以便更加高效地开发前端代码。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653502997d4982a6ebad948e