无需迭代遍历将成对数组转换为含两个独立数组的对象的方法
解答
首先可以明确:不存在完全不需要遍历原数组的操作方法。所有能实现该转换的API底层都会遍历数组逐个读取元素,只是不需要你手动写for/forEach之类的遍历逻辑而已。
下面是两种常用的简洁实现方式:
方案1:reduce 实现(全场景适用)
这个方案不会受数组元素重复影响,即使有重复的x值也不会丢失数据:
const pairArr = [[x1, y1], [x2, y2], [x3, y3]] const res = pairArr.reduce((acc, [key, value]) => { acc.keys.push(key) acc.values.push(value) return acc }, { keys: [], values: [] })
方案2:Object.fromEntries 实现(仅适用于key唯一场景)
如果原数组所有第一个元素x都不重复,可以用这个更简洁的写法:
const pairArr = [[x1, y1], [x2, y2], [x3, y3]] const tempObj = Object.fromEntries(pairArr) const res = { keys: Object.keys(tempObj), values: Object.values(tempObj) }
注意:如果原数组存在重复的x值,后出现的项会覆盖先出现的项,导致数据丢失,仅确认所有x唯一时使用。
内容的提问来源于stack exchange,提问作者anesongib
相关产品推荐
相关产品推荐

