Javascript将数组项与其他数组中的每个项组合为文本

Javascript将数组项与其他数组中的每个项组合为文本,javascript,arrays,Javascript,Arrays,我有这个阵列[“颜色”、“红色”、“蓝色”] 我想将颜色数组中的项目与这些数组中的项目组合为文本 [ ["Size", ["small", "medium", "large"]], ["Model", ["modern", "old"]] ] 最终的结果应该是这样的, [ "Color_red_Size_small_Model_modern", "Color_red_Size_small_Model_old", "Color_red_Size_medium_Model_modern"

我有这个阵列<代码>[“颜色”、“红色”、“蓝色”]

我想将颜色数组中的项目与这些数组中的项目组合为文本

[
 ["Size", ["small", "medium", "large"]],
 ["Model", ["modern", "old"]]
]
最终的结果应该是这样的,

[
 "Color_red_Size_small_Model_modern",
 "Color_red_Size_small_Model_old",
 "Color_red_Size_medium_Model_modern",
 "Color_red_Size_medium_Model_old",
 "Color_red_Size_large_Model_modern",
 "Color_red_Size_large_Model_old",
 "Color_blue_Size_small_Model_modern",
 "Color_blue_Size_small_Model_old",
 "Color_blue_Size_medium_Model_modern",
 "Color_blue_Size_medium_Model_old",
 "Color_blue_Size_large_Model_modern",
 "Color_blue_Size_large_Model_old",
]
我来不了。我该怎么做呢?

试试看

函数makeLabels(arr){
返回arr.reduce((结果,el)=>{
var first=el[0];
var list=el[1];
var newResult=[];
如果(结果长度<1){
list.forEach((val)=>{
newResult.push(第一个+val);
});
}否则{
结果.forEach((r)=>{
list.forEach((val)=>{
newResult.push(r+“”+first+“”+val);
});
});
}
返回新结果;
}, []);
}
var特性=
[[“颜色”、[“红色”、“蓝色”]]
,[“尺寸”,[“小型”、“中型”、“大型”]]
,[“模型”,“现代”,“旧”]];

log(makeLabels(properties))您可以对值使用笛卡尔函数,并将键映射到值前面,然后连接数组

const
笛卡尔=(a,b)=>a.reduce((r,v)=>r.concat(b.map(w=>[]),concat(v,w)),[]),
数据=[“颜色”、[“红色”、“蓝色”]、[“尺寸”、[“小”、“中”、“大”]、[“型号”、[“现代”、“旧”],
keys=data.map(([key])=>key),
结果=数据
.map(([,值])=>值)
.reduce(笛卡尔)
.map(a=>a.map((v,i)=>[keys[i],v].join('u')).join('u'));
控制台日志(结果)

.as控制台包装{max height:100%!重要;top:0;}
欢迎使用SO。你可能会发现阅读这个网站对你有帮助。为了获得您问题的最佳答案,我们希望看到a)您尝试先自己解决问题,b)使用a缩小问题范围。要求他为你做所有的工作对你和我们都没有帮助。使用循环可以有所帮助you@cid我已经试了好几个小时了,但我试着用循环来做,但没有告诉我们您的最佳尝试,您可能接近解决方案谢谢!它成功了,这是个好方法。我尝试了一个很长的解决方案,但它只是那么简单谢谢你