js数组相同属性合并

新手上路,请多包涵

js数组相同属性合并
遇到一个问题,一个数组里面有很多一样的name,每个对应的对象里面有一个数组,怎么把相同的name里面的数组内容合并成一个数组,小萌新现在头都快炸了

(12) [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {noStock: Array(3)}
1: {noStock: Array(1)}
2: {noStock: Array(3), name: "小", isShow: true}
3: {noStock: Array(0)}
4: {noStock: Array(2), name: "大", isShow: true}
5: {noStock: Array(2), name: "中", isShow: true}
6: {noStock: Array(1), name: "小", isShow: true}
7: {noStock: Array(2), name: "定制", isShow: true}
8: {noStock: Array(1), name: "大", isShow: true}
9: {noStock: Array(1), name: "中", isShow: true}
10: {noStock: Array(1), name: "小", isShow: true}
11: {noStock: Array(1), name: "定制", isShow: true}
length: 12
//合并成
[{noStock: Array(5), name: "小", isShow: true},
{noStock: Array(3), name: "中",isShow:true},
{noStock: Array(3), name: "大",isShow:true},
{noStock:Array(3),name:"定制",isShow:true}]
阅读 5.9k
1 个回答
const input = [
  { noStock: Array(3), name: "小", isShow: true },
  { noStock: Array(2), name: "大", isShow: true },
  { noStock: Array(2), name: "中", isShow: true },
  { noStock: Array(1), name: "小", isShow: true },
  { noStock: Array(2), name: "定制", isShow: true },
  { noStock: Array(1), name: "大", isShow: true },
  { noStock: Array(1), name: "中", isShow: true },
  { noStock: Array(1), name: "小", isShow: true },
  { noStock: Array(1), name: "定制", isShow: true },
];

const ouput = input.reduce((re, obj) => {
  const item = re.find((o) => o.name === obj.name);
  item ? (item.noStock = item.noStock.concat(obj.noStock)) : re.push(obj);
  return re;
}, []);
console.log(ouput);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题