如何连接具有相同 id 的对象值

Abh*_*bhi 1 javascript arrays

我有一个数组:

let ar = [
    {
         uid:1, 
         flat_no: 1
    },
    {
         uid:2,
         flat_no: 2
    },
    {
         uid:1,
         flat_no:3
    }
];
Run Code Online (Sandbox Code Playgroud)

如果uid相同,那么我想删除重复项uid并将其连接起来flat_no。输出数组应该是这样的:

[
     {
         uid:1, 
         flat_no: [1,3]
     },
     {
         uid:2,
         flat_no: 2
     }
];
Run Code Online (Sandbox Code Playgroud)

Nik*_*des 5

Array.reduce您可以使用和的组合Array.find

如果您在累加器数组中找到现有项目,只需更新它的flat_no属性,否则push将其更新到累加器数组中。

let arr = [
  {
     uid: 1,
     flat_no: 1
  },
  {
     uid: 2,
     flat_no: 2
  },
  {
     uid: 1,
     flat_no: 3
  }
]

arr = arr.reduce((arr, item) => {
  const existing = arr.find(innerItem => innerItem.uid === item.uid)

  if (existing) {
    existing.flat_no = Array.isArray(existing.flat_no)
      ? existing.flat_no
      : [existing.flat_no]

    existing.flat_no.push(item.flat_no)
  } else {
    arr.push(item)
  }

  return arr
}, [])

console.log(arr)
Run Code Online (Sandbox Code Playgroud)