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

如何编写函数合并数组中所有对象的keywords为单个数组?

合并所有对象的keywords数组的解决方案

嘿,这个问题很好解决,完全不用手动逐个执行concat操作——毕竟手动拼接不仅繁琐,还没法应对data数组中对象的增删变化。这里有两种简洁又靠谱的方法,不管data里的对象怎么变,函数都能自动处理:

方法一:使用Array.reduce()

reduce方法可以遍历整个data数组,逐步将每个对象的keywords拼接到累加数组中,初始值设为空数组即可:

function mergeKeywords(data) {
  // 遍历data,将每个item的keywords拼接到累加器acc里
  return data.reduce((acc, item) => acc.concat(item.keywords), []);
}

方法二:使用Array.flatMap()(更简洁)

flatMap是map+flat的组合,先把每个对象映射为它的keywords数组,再自动将这些数组扁平化一层,直接得到合并后的结果:

function mergeKeywords(data) {
  return data.flatMap(item => item.keywords);
}

测试示例

把你的data传入函数,就能得到合并后的数组:

var data = [ 
  { Name: "HR", popularity: 91, keywords: ["bat", "happy", "success"] }, 
  { Name: "biz", popularity: 3, keywords: ["sad", "code", "shady"] }, 
  { Name: "xyz", popularity: 80, keywords: ["alphabetical", "code", "trendy"] }, 
  { Name: "catty", popularity: 536, keywords: ["code", "startup", "cats"] } 
];

console.log(mergeKeywords(data));
// 输出结果:["bat", "happy", "success", "sad", "code", "shady", "alphabetical", "code", "trendy", "code", "startup", "cats"]

额外补充(可选)

如果需要合并后去除重复的关键词,可以在结果外层套一个Set来实现:

function mergeUniqueKeywords(data) {
  return [...new Set(data.flatMap(item => item.keywords))];
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:26:46