Javascript 如何将2个数组转换为一个数组
上面的代码有两个数组,分别是颜色和大小,我试图用下面的输出对这两个数组进行foreach和排列,但都失败了。场景如下:颜色有2个值,红色是[0],蓝色是[1],大小有3个值,s是[0],m是[1],L是[2]。所以我希望结果有自己的键和值作为上面的输出。有人能帮忙吗?格式将是javascript。您可以使用reduce和foreach:Javascript 如何将2个数组转换为一个数组,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,上面的代码有两个数组,分别是颜色和大小,我试图用下面的输出对这两个数组进行foreach和排列,但都失败了。场景如下:颜色有2个值,红色是[0],蓝色是[1],大小有3个值,s是[0],m是[1],L是[2]。所以我希望结果有自己的键和值作为上面的输出。有人能帮忙吗?格式将是javascript。您可以使用reduce和foreach: const color=[“红色”、“蓝色”] 常量大小=[“s”、“m”、“L”] const out=color.reduce((a,c,i1)=>( s
const color=[“红色”、“蓝色”]
常量大小=[“s”、“m”、“L”]
const out=color.reduce((a,c,i1)=>(
size.forEach((s,i2)=>a.push({id:'${i1}-${i2}',val:'${c}/${s}})),a
), [])
console.log(out)
您可以使用嵌套的map()
函数。使用flatMap()
var color=[“红色”、“蓝色”];
变量大小=[“s”、“m”、“L”];
功能组合阵列(arr1、arr2){
返回arr1.flatMap((x,i)=>
arr2.map((y,j)=>({id:`${i}-${j}`,val:`${x}/${y}}}))
)
}
console.log(combineArrays(颜色、大小))
将第一个数组中的每个条目映射到第二个数组中的每个条目,为每个可能性创建所需的对象,最后需要展平现有的二维数组:
var color=[“红色”、“蓝色”];
变量大小=[“s”、“m”、“L”];
函数每个组合(arr1、arr2){
返回arr1.map((val1,id1)=>arr2.map((val2,id2)=>({
id:`${id1}-${id2}`,
val:`${val1}/${val2}`
}))).flat();
}
常量结果=每个组合(颜色、大小);
控制台日志(结果)代码>如果您更喜欢使用循环-
var color = ["red", "blue"];
var size = ["s", "m", "L"];
//output will be
var final = [
{
id: 0-0,
val: 'red/s'
},
{
id: 0-1,
val: 'red/m'
},
{
id: 0-2,
val: 'red/l'
},
{
id: 1-0,
val: 'blue/s'
},
{
id: 1-1,
val: 'blue/m'
},
{
id: 1-1,
val: 'blue/l'
},
];
var testFunc=函数(){
变量颜色=[“红色”、“蓝色”];
变量大小=[“s”、“m”、“L”];
var-res=[];
for(设i=0;i
您的输出数据不是正确的javascript语法。向我们展示您的代码刚才看到了Maheer Ali使用flatMap的解决方案,它比我认为的解决方案更好
var testFunc = function () {
var colors = ["red", "blue"];
var sizes = ["s", "m", "L"];
var res = [];
for (let i = 0; i < colors.length; i++) {
for (var j = 0; j < sizes.length; j++) {
res.push({ id: (i + '-' + j), val: colors[i] + '/' + sizes[j] });
}
}
console.log(res);
}();