-1

我正在努力寻找解决方案,我构建了这个简单的示例。我希望有人能震动我的大脑。提前致谢。

var arr = [
{ name:"DOM", other: "a" },
{ name:"DEE", other: "b" },
{ name:"DEE", other: "c" },
{ name:"DEE", other: "d" },
{ name:"DEE", other: "e" },
];

预期输出:

{name: "DOM", other: "a" }
{name: "DEE", other: "b,c,d,e"}
4

3 回答 3

-1

使用forEach和构建一个对象,其键name与值一样,都为同意otherObject.values从上面的对象获取。

var arr = [
  { name: "DOM", other: "a" },
  { name: "DEE", other: "b" },
  { name: "DEE", other: "c" },
  { name: "DEE", other: "d" },
  { name: "DEE", other: "e" },
];

const merge = (arr) => {
  const res = {};
  arr.forEach((item) => {
    if (item.name in res) {
      res[item.name].other += `,${item.other}`;
    } else {
      res[item.name] = { ...item };
    }
  });
  return Object.values(res);
};

console.log(merge(arr));

于 2020-12-28T03:57:27.847 回答
-1

var arr = [
    { name: "DOM", other: "a" },
    { name: "DEE", other: "b" },
    { name: "DEE", other: "c" },
    { name: "DEE", other: "d" },
    { name: "DEE", other: "e" },
];

const result = arr.reduce((acc, curr) => {
    if (acc[curr.name]) {
        acc[curr.name].other = acc[curr.name]['other'].concat(',' + curr.other)
    } else {
        acc[curr.name] = { name: curr.name, other: curr.other }
    }
    return acc;
}, {})

console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }

于 2020-12-28T04:02:46.617 回答
-2

这应该有效:

let arr = [
    { name:"DOM", other: "a" },
    { name:"DEE", other: "b" },
    { name:"DEE", other: "c" },
    { name:"DEE", other: "d" },
    { name:"DEE", other: "e" },
];
result = {}
for(let item of arr){
    if(item.name in result){
        result[item.name] += ',' + item.other
    }else{
        result[item.name] = item.other
    }
}
let resultArray = Object.entries(result).map((data)=> 
    {return {name: data[0], other: data[1]}})

console.log(resultArray)

于 2020-12-28T04:05:18.437 回答