JavaScript如何将一维数组分组转换为x/y键名的对象数组
数组按相邻元素分组转键值对实现方案
你要做的本质是把长度为偶数的一维数组,按每2个相邻元素为一组,映射为带x、y属性的对象集合,下面是两种可直接运行的实现:
方法1:for循环步进实现(逻辑最直观,兼容性最好)
直接让循环索引每次递增2,每次取当前索引和下一个索引的值组成对象,推入结果数组即可:
var arr = [1,2,3,4] var new_arr = [] for (var i = 0; i < arr.length; i += 2) { new_arr.push({ x: arr[i], y: arr[i + 1] }) } // 运行后new_arr的结果和你给出的目标结构完全一致
如果原数组可能出现奇数长度的情况,可以给y加自定义兜底值,比如y: arr[i + 1] || null,避免出现undefined。
方法2:reduce函数式写法
适合习惯函数式编程风格的场景,不需要额外声明循环变量:
var arr = [1,2,3,4] var new_arr = arr.reduce(function(result, current, index) { // 偶数索引对应每组的x值,此时新建对象推入结果 if (index % 2 === 0) { result.push({ x: current, y: arr[index + 1] }) } return result }, [])
两种实现都严格匹配你给出的输入输出结构,不需要引入额外依赖,直接复制到业务代码里就能运行。
内容的提问来源于stack exchange,提问作者youslug
相关产品推荐
相关产品推荐

