首页 > 解决方案 > 如何将 3 个数组合并为一个具有相同索引的数组 - JavaScript

问题描述

我目前有 3 个数组,我想将它们组合在一起并将它们显示为一个对象。

1. dataArr = [ 0. 123323, 1. 8930, 2. "9,321", 3. 103001 ]

2. titleArr = [ 0. "New", 1. "Old, 2. "Confirmed", 3. "Not Available"    ]

3. typeArr = [  0. "Online", 1. "In-Store" 2. "Walk In", 3. "Appointment"   ]

我希望所有这些都是一个数组,并且有一个具有相同索引的对象数组,例如。

newArr = [0. { data: 123323 , title: "New", type: "Online"} 1. {data ... } ... ] 

我尝试使用一种映射方法,我得到了两个数组的结果,但是第三个数组typeArr为每个索引而不是其各自的索引插入一个由 4 个对象组成的数组。

Console.log = [ 0. data: 123323, title: New, type: [ 0. "Online", 1. "In-Store, 2. "Walk In" 3. "Appointment" ] ]

这是我的代码:

const combineArr = dataArr.map((data, index) => ({
        data,
        title: titleArr[index]
    }));

    const newArr = combineArr .map((type, index) => ({
        type,
        data: typeArr[index]
    }));

在这种情况下,我使用两个单独的映射函数来尝试创建一个新数组。我相信这是我感到困惑的地方。有没有办法在一个映射函数中处理所有 3 个数组?

标签: javascriptarraysmapping

解决方案


假设索引顺序相同,可以使用如下函数map

let dataArr = [ 123323, 8930, 9321, 103001 ],
    titleArr = [ "New", "Old", "Confirmed", "Not Available"    ],
    typeArr = [  "Online", "In-Store", "Walk In", "Appointment"   ],
    result = dataArr.map((data, i) => ({data, title: titleArr[i], type:  typeArr[i]}));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }


推荐阅读