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

数组过滤问题:按第一个数组元素筛选并聚合Done值

解决方案

首先注意你的数组语法存在问题,JavaScript中对象需要用{}包裹,字符串需要加引号,修正后的数组应该是:

const firstArray = ['eva', 'ema', 'ela'];
const secondArray = [
  {Name: 'eva', Done: 2},
  {Name: 'ela', Done: 5},
  {Name: 'ema', Done: 3},
  {Name: 'ela', Done: 1},
  {Name: 'ema', Done: 0},
  {Name: 'eva', Done: 4},
  {Name: 'ela', Done: 6},
  {Name: 'ema', Done: 8},
  {Name: 'eva', Done: 7},
  {Name: 'ela', Done: 9}
];

你可以使用Array.map()遍历firstArray,结合Array.filter()和Array.map()来完成需求:

const result = firstArray.map(name => {
  // 筛选出当前名字对应的所有项
  const matchedItems = secondArray.filter(item => item.Name === name);
  // 提取Done值组成数组
  const doneValues = matchedItems.map(item => item.Done);
  // 返回目标格式的对象
  return { name: name, Done: doneValues };
});

console.log(result);

输出结果符合你的需求:

[
  { name: 'eva', Done: [2, 4, 7] },
  { name: 'ema', Done: [3, 0, 8] },
  { name: 'ela', Done: [5, 1, 9] }
]

你的原有代码存在的问题:

  • 语法错误:缺少闭合的},导致代码无法执行
  • 使用var声明变量n,会存在函数作用域提升问题,建议改用let或const
  • 仅完成了筛选步骤,但没有提取Done值,也没有将结果收集到最终数组中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 09:53:14