You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅将多维数组的部分内容扁平化一级?JSON数组处理求助

解决JSON对象转目标一维数组的问题

我懂你卡在哪了——你当前代码生成了嵌套数组,核心原因是你把product.name和通过reduce得到的spec数组直接放在了同一个数组里,导致每个子项里还套着一层数组。其实不用这么绕,我们可以直接把名称和所有spec元素合并成一维数组,下面给你两种简单的解决方案:

方法1:使用扩展运算符(推荐,更简洁)

let array = products.map((product) => {
  return [product.name, ...product.attributes.map(attribute => attribute.spec)];
});

原理说明

product.attributes.map(attribute => attribute.spec)会直接生成一个包含所有spec值的数组(比如["Spec", "Spec"]),用...扩展运算符可以把这个数组里的元素“展开”,和product.name一起组成新的一维数组,完美得到你想要的["Name", "Spec", "Spec"]结构。

方法2:使用concat方法

如果你对扩展运算符不太熟悉,也可以用数组的concat方法来合并:

let array = products.map((product) => {
  return [product.name].concat(product.attributes.map(attribute => attribute.spec));
});

原理说明

先创建一个只包含产品名称的数组[product.name],然后调用concat方法把spec数组的所有元素合并进来,同样能消除嵌套,得到目标格式。

另外补充一句:你原来代码里的reduce其实是多余的,因为map已经帮你生成了spec的数组,不需要再用reduce重复拼接啦。

内容的提问来源于stack exchange,提问作者Krush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:14:03