如何将对象数组转换为指定嵌套数组并重复首个元素?
解决对象数组转换并重复首个元素的问题
你已经用map方法完成了对象到数组的转换,差一步就能实现需求啦——只需要在转换后的数组末尾再添加第一个元素的拷贝就行。
先看你原来的代码,运行后得到的是[[[11,21],[31,41],[10,20]]],缺少了最后重复的[11,21]。这里有两种简单的修改方式:
方法一:先转换再追加元素
这种方式逻辑清晰,适合新手理解:
var array1 = [{"a":11,"b":21},{"a":31,"b":41},{"a":10,"b":20}]; // 第一步:把每个对象转换成 [a, b] 格式的数组 const transformedArray = array1.map(item => [item.a, item.b]); // 第二步:把转换后的第一个元素追加到数组末尾 transformedArray.push(transformedArray[0]); // 第三步:包上最外层的数组 var array2 = [transformedArray]; console.log(array2); // 输出:[[[11,21],[31,41],[10,20],[11,21]]]
方法二:用扩展运算符一次性拼接
如果想写得更简洁,可以用ES6的扩展运算符,一步完成转换和追加:
var array1 = [{"a":11,"b":21},{"a":31,"b":41},{"a":10,"b":20}]; var array2 = [ [...array1.map(item => [item.a, item.b]), [array1[0].a, array1[0].b]] ]; console.log(array2); // 同样得到目标结果
两种方法都能实现需求,区别在于第一种分步操作更直观,第二种代码更紧凑。因为这里的元素是数字(值类型),直接引用第一个元素就没问题,不需要考虑深拷贝的问题~
内容的提问来源于stack exchange,提问作者Sujay Shetty
相关产品推荐
相关产品推荐

