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

JavaScript中如何提取数组元素并转换为指定结构的对象

数组转分组对象的实现方案

输入示例

let a = ['monkey: animal','John:human', 'Rob:human', 'donkey:animal']

期望输出

const output = {
    animal: ['monkey', 'donkey'],
    human: ['John', 'Rob']
}

实现方法

方法一:使用Array.reduce(推荐)

reduce是处理这类分组问题最简洁的方式,通过遍历数组逐步构建目标对象:

const result = a.reduce((acc, item) => {
  // 分割字符串并去除前后空格,兼容冒号前后的空格差异
  const [name, category] = item.split(':').map(str => str.trim());
  // 若当前类别未初始化,创建空数组
  acc[category] = acc[category] || [];
  // 将名称推入对应类别的数组
  acc[category].push(name);
  return acc;
}, {});

console.log(result); // 输出符合预期的分组对象

方法二:使用Array.forEach(直观易懂)

如果对reduce不太熟悉,用forEach遍历构建对象的逻辑更直白:

const result = {};
a.forEach(item => {
  const [name, category] = item.split(':').map(str => str.trim());
  // 检查类别是否存在,不存在则初始化数组
  if (!result[category]) {
    result[category] = [];
  }
  result[category].push(name);
});

console.log(result);

关键注意点

  • 处理字符串分割时的空格:部分元素(如monkey: animal)冒号后有空格,通过trim()统一去除前后空白,避免出现' animal'这类错误的键名。
  • 数组初始化:每次处理前检查类别对应的数组是否存在,不存在则创建空数组,避免push时报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:54:36