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

如何通过数组值匹配生成指定结构的JavaScript新数组?

如何通过ID匹配生成指定结构的数组

现有两个JavaScript数组:

第一个是车辆分类列表:

const vehicleList = [
      {
         "_id": "6294790e2fe156d20868b39e",
         "category_id_tr": "Motosiklet",
         "category_name_tr": "A1",
         "category_desc_tr": "Silindir hacmi 125 santimetreküpü, gücü 11 kilovatı ve gücünün ağırlığına oranı 0,1’i geçmeyen, sepetli veya sepetsiz iki tekerlekli motosikletler ile gücü 15 kilovatı geçmeyen üç tekerlekli motosikletler.",
            "limit_age_tr": 16,
            "validity_years_tr": 10
      },
      {
         "_id": "6294790e2fe156d20868b39f",
         "category_id_tr": "Motosiklet",
         "category_name_tr": "A2",
         "category_desc_tr": "Gücü 35 kilovatı ve gücünün ağırlığına oranı 0,2’yi geçmeyen, sepetli veya sepetsiz iki tekerlekli motosikletler ile gücü 15 kilovatı geçmeyen üç tekerlekli motosikletler.",
         "limit_age_tr": 18,
         "validity_years_tr": 10
      }
    ]

第二个是允许的车辆ID数组:

const allowedVehicle = ['6294790e2fe156d20868b39e', '6294790e2fe156d20868b39f']

需要将allowedVehicle中的ID与vehicleList里对象的_id匹配,生成如下结构的新数组:

[
    {
        "value":"6294790e2fe156d20868b39e",
        "label": "A1"
    },
    {
        "value":"6294790e2fe156d20868b39f",
        "label": "A2"
    },
]

方法1:filter + map 组合实现

先筛选出vehicleList中_id在allowedVehicle内的项,再将这些项转换为目标格式:

const result = vehicleList
  .filter(vehicle => allowedVehicle.includes(vehicle._id))
  .map(vehicle => ({
    value: vehicle._id,
    label: vehicle.category_name_tr
  }));

这种写法逻辑直观,适合数据量较小的场景。

方法2:构建映射表(高效版)

如果数据量较大,先通过reduce构建ID到分类名称的映射表,再遍历allowedVehicle生成结果,能大幅提升查找效率:

// 构建ID与分类名称的映射
const vehicleMap = vehicleList.reduce((map, vehicle) => {
  map[vehicle._id] = vehicle.category_name_tr;
  return map;
}, {});

// 生成目标数组
const result = allowedVehicle.map(id => ({
  value: id,
  label: vehicleMap[id]
}));

该方法的时间复杂度为O(m+n)(m为vehicleList长度,n为allowedVehicle长度),比方法1的O(m*n)更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:40:25