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

如何将JavaScript对象数组按selected_color统计并转换为指定格式?

解决方案

你可以通过统计颜色出现次数再转换为目标格式这两步来实现,下面是几种常用的写法:

方法1:使用 Array.reduce() 统计后转换

先利用reduce生成一个以颜色为键、次数为值的对象,再把这个对象转成目标数组:

const originalArray = [
  { "name": "A", "selected_color": "Red" },
  { "name": "B", "selected_color": "Green" },
  { "name": "C", "selected_color": "Blue" },
  { "name": "D", "selected_color": "Red" }
];

// 第一步:统计每个颜色的出现次数
const colorCount = originalArray.reduce((acc, item) => {
  const color = item.selected_color;
  // 如果当前颜色已在统计对象中,次数加1,否则初始化为1
  acc[color] = (acc[color] || 0) + 1;
  return acc;
}, {});

// 第二步:转换为目标格式的数组
const result = Object.entries(colorCount).map(([color, count]) => ({
  color,
  count: count.toString() // 按需求转为字符串类型
}));

console.log(result);

方法2:使用 Map 结构统计

Map的键值对结构天生适合这类统计,逻辑更直观:

const originalArray = [
  { "name": "A", "selected_color": "Red" },
  { "name": "B", "selected_color": "Green" },
  { "name": "C", "selected_color": "Blue" },
  { "name": "D", "selected_color": "Red" }
];

const colorMap = new Map();

// 遍历数组统计次数
originalArray.forEach(item => {
  const color = item.selected_color;
  colorMap.set(color, (colorMap.get(color) || 0) + 1);
});

// 转换为目标数组
const result = Array.from(colorMap, ([color, count]) => ({
  color,
  count: count.toString()
}));

console.log(result);

两种方法最终都会输出你需要的格式,若不需要count为字符串类型,去掉toString()即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:48:22