Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将2个数组转换为一个数组_Javascript_Arrays_Reactjs - Fatal编程技术网

Javascript 如何将2个数组转换为一个数组

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

上面的代码有两个数组,分别是颜色和大小,我试图用下面的输出对这两个数组进行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)=>(
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);
            }();