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

如何根据指定产品名称数组,提取对应产品的所有存储选项?

问题描述

我有一个包含产品名称和存储信息的数组:

let array = [{name: "samsung A", storage: "128GB"}, {name: "samsung B", storage: "128GB"}, {name: "samsung C", storage: "256GB"}, {name: "samsung A", storage: "256GB"}]

另有一个需要查询存储信息的产品名称数组:

let array1 = ["samsung A", "samsung B", "samsung C"]

我需要为array1中的每个产品名称,匹配array里对应的所有可用存储选项。之前我用下面的代码手动指定产品名可以实现,但想要自动遍历array1里的所有产品名来完成这个功能:

array.filter(el => el.name === "samsung A").map(item => item.storage)
解决方案

方法一:直接遍历array1结合filter+map

直接用array1.map()遍历每个产品名,对每个名称复用你之前的逻辑即可:

const result = array1.map(productName => {
  return {
    name: productName,
    storages: array.filter(el => el.name === productName).map(item => item.storage)
  };
});

console.log(result);
// 输出:
// [
//   { name: 'samsung A', storages: [ '128GB', '256GB' ] },
//   { name: 'samsung B', storages: [ '128GB' ] },
//   { name: 'samsung C', storages: [ '256GB' ] }
// ]

方法二:先构建映射表(更高效)

如果array的数据量较大,反复执行filter会有性能损耗,建议先用reduce构建一个以产品名为键、存储数组为值的映射表,再遍历array1获取结果:

// 构建产品-存储映射表
const storageMap = array.reduce((map, item) => {
  if (!map[item.name]) {
    map[item.name] = [];
  }
  map[item.name].push(item.storage);
  return map;
}, {});

// 遍历array1生成结果
const result = array1.map(name => ({
  name,
  storages: storageMap[name] || [] // 兼容array1中存在但array里无记录的产品
}));

console.log(result);
// 输出和方法一一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:41:03