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

如何合并数组中重复resource_name对象的weekdays属性

解决按resource_name合并对象数组并处理weekdays的问题

这个需求的核心是分组后逐位置合并数组,不管有多少个重复的resource_name,只要先把相同名称的对象归到一组,再对每组的weekdays数组逐个位置取非null值就行,完全能处理3个及以上同名称的情况。

实现思路

  1. 分组归类:用一个容器(比如Map或者普通对象)把所有相同resource_name的对象的weekdays数组收集到一起,键就是resource_name,值是对应所有weekdays数组的集合。
  2. 逐位置合并:对每个分组里的weekdays数组集合,遍历每个索引位置,找到该位置上的非null值(题目说无重叠冲突,所以不用担心多个非null的情况),组成新的weekdays数组。
  3. 转换格式:把分组后的结果转换成目标格式的数组即可。

代码示例(JavaScript)

const originalArray = [
  {'resource_name': 'Objectname1', 'weekdays': [null, null, null, "vacation", "vacation"]},
  {'resource_name': 'Objectname2', 'weekdays': [null, null, "vacation", "vacation", "vacation"]},
  {'resource_name': 'Objectname1', 'weekdays': ["vacation", "vacation", null, null, null]},
  {'resource_name': 'Objectname1', 'weekdays': [null, null, "vacation", null, null]}
];

// 1. 用Map分组,收集同一resource_name的所有weekdays数组
const groupedResources = new Map();
originalArray.forEach(item => {
  const name = item.resource_name;
  // 如果Map里没有这个名称,就初始化一个空数组
  if (!groupedResources.has(name)) {
    groupedResources.set(name, []);
  }
  // 把当前对象的weekdays加到对应分组里
  groupedResources.get(name).push(item.weekdays);
});

// 2. 合并每个分组的weekdays数组,生成结果
const mergedArray = [];
groupedResources.forEach((weekdaysCollection, resourceName) => {
  // 获取weekdays数组的固定长度(假设所有数组长度一致)
  const daysCount = weekdaysCollection[0].length;
  // 逐个位置处理,找到该位置的非null值
  const mergedWeekdays = Array.from({ length: daysCount }, (_, index) => {
    // 遍历该索引下的所有值,取第一个非null的(因为无冲突,任意非null都可以)
    return weekdaysCollection.find(weekdays => weekdays[index] !== null)[index];
  });
  // 把合并后的对象加到结果数组
  mergedArray.push({ resource_name: resourceName, weekdays: mergedWeekdays });
});

console.log(mergedArray);

代码解释

  • 用Map分组比普通对象更安全,因为它可以处理任何类型的键,不过如果你的resource_name都是字符串,用普通对象也完全没问题。
  • Array.from用来创建指定长度的数组,然后对每个索引位置,用find找到第一个在该位置非null的weekdays数组,取出对应值。
  • 这种方法不管有多少个重复的resource_name都能处理,因为所有同名称的weekdays都会被收集到同一组,统一合并。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:39:41