Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何连接具有相同id的对象值_Javascript_Arrays - Fatal编程技术网

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

Javascript 如何连接具有相同id的对象值,javascript,arrays,Javascript,Arrays,我有一个数组: let ar = [ { uid:1, flat_no: 1 }, { uid:2, flat_no: 2 }, { uid:1, flat_no:3 } ]; 如果uid相同,那么我想删除重复的uid,并将其flat\u no连接起来。输出数组应如下所示: [ { uid:1,

我有一个数组:

let ar = [
    {
         uid:1, 
         flat_no: 1
    },
    {
         uid:2,
         flat_no: 2
    },
    {
         uid:1,
         flat_no:3
    }
];
如果
uid
相同,那么我想删除重复的
uid
,并将其
flat\u no
连接起来。输出数组应如下所示:

[
     {
         uid:1, 
         flat_no: [1,3]
     },
     {
         uid:2,
         flat_no: 2
     }
];

您可以使用和的组合

如果在累加器数组中找到现有项,只需更新它的
flat\u no
属性,否则
将它推送到累加器数组

让arr=[
{
uid:1,
1号公寓
},
{
uid:2,
二号公寓
},
{
uid:1,
3号公寓
}
]
arr=arr.reduce((arr,项目)=>{
const existing=arr.find(innerItem=>innerItem.uid===item.uid)
如果(现有){
existing.flat\u no=Array.isArray(existing.flat\u no)
?现有的单位号
:[现有单位编号]
现有平推编号(项目平推编号)
}否则{
到货推送(项目)
}
返回arr
}, [])

console.log(arr)
您可以使用和的组合

如果在累加器数组中找到现有项,只需更新它的
flat\u no
属性,否则
将它推送到累加器数组

让arr=[
{
uid:1,
1号公寓
},
{
uid:2,
二号公寓
},
{
uid:1,
3号公寓
}
]
arr=arr.reduce((arr,项目)=>{
const existing=arr.find(innerItem=>innerItem.uid===item.uid)
如果(现有){
existing.flat\u no=Array.isArray(existing.flat\u no)
?现有的单位号
:[现有单位编号]
现有平推编号(项目平推编号)
}否则{
到货推送(项目)
}
返回arr
}, [])
console.log(arr)
1)将初始数组减少为一个对象,该对象以uid作为键,以平面号作为值

2) 然后在关键点上运行一个映射,将其转换为具有uid和平面号的对象数组

1) 第一步代码

let ar = [{uid:1, flat_no: 1},{uid:2, flat_no: 2},{uid:1, flat_no:3}];
let outputObj = ar.reduce((outputObj,currObj,currIndex) => {
  let {uid,flat_no} = currObj
  if (outputObj[uid]) {
    outputObj[uid].push(flat_no)
  }
  else {
   outputObj[uid] = [flat_no]
  }
  return outputObj
},{})
(二)

1) 将初始数组减少为一个对象,该对象以uid作为键,以平面号作为值

2) 然后在关键点上运行一个映射,将其转换为具有uid和平面号的对象数组

1) 第一步代码

let ar = [{uid:1, flat_no: 1},{uid:2, flat_no: 2},{uid:1, flat_no:3}];
let outputObj = ar.reduce((outputObj,currObj,currIndex) => {
  let {uid,flat_no} = currObj
  if (outputObj[uid]) {
    outputObj[uid].push(flat_no)
  }
  else {
   outputObj[uid] = [flat_no]
  }
  return outputObj
},{})
(二)


您可以迭代数组并填充对象(此处用作哈希映射)

完成后,提取值以获得结果

let hashResult = {}
ar.forEach(element => {
    if (hashResult[element.uid] == undefined) {
        hashResult[element.uid] = { uid: element.uid, flat_no: [] }
    }
    hashResult[element.uid].flat_no.push(element.flat_no)
})

let result = Object.values(hashResult)
console.log(new Date(), result)

您可以迭代数组并填充对象(此处用作哈希映射)

完成后,提取值以获得结果

let hashResult = {}
ar.forEach(element => {
    if (hashResult[element.uid] == undefined) {
        hashResult[element.uid] = { uid: element.uid, flat_no: [] }
    }
    hashResult[element.uid].flat_no.push(element.flat_no)
})

let result = Object.values(hashResult)
console.log(new Date(), result)

您可以使用单个
数组以简洁的方式执行此操作。减少
对象。值
以匹配所需的输出:

let data=[{uid:1,平面编号1},{uid:2,平面编号2},{uid:1,平面编号3}];
const result=data.reduce((r,{uid,flat_no})=>{
r[uid]?r[uid]。展开号=[r[uid]。展开号,展开号]:r[uid]={uid,展开号}
返回r
}, {})

console.log(Object.values(result))
您可以使用单个
数组以简洁的方式执行此操作。减少
对象。值
以匹配所需的输出:

let data=[{uid:1,平面编号1},{uid:2,平面编号2},{uid:1,平面编号3}];
const result=data.reduce((r,{uid,flat_no})=>{
r[uid]?r[uid]。展开号=[r[uid]。展开号,展开号]:r[uid]={uid,展开号}
返回r
}, {})

console.log(Object.values(result))
发布的问题似乎根本不包括解决问题的方法。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试的内容,以便说明您遇到的具体障碍。有关更多信息,请参阅并获取。查看此项,了解您迄今为止尝试了哪些方法?发布的问题似乎根本不包含解决问题的方法。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试的内容,以便说明您遇到的具体障碍。欲了解更多信息,请查看并使用。查看您迄今为止尝试了什么?我认为我们需要的格式是
平面图编号:[1,3]
,而不是
平面图编号:'1,3'
是的,根据当前的操作,这一个工作正常。我认为我们需要的格式是
平面图编号:[1,3]
,不
flat\u no:'1,3'
是的,根据当前的操作,这个是正确的。
finalOutput
是错误的,它应该是:
[{uid:1,flat\u no:[1,3]},{uid:2,flat\u no:2}
finalOutput
是错误的,它应该是:
[{uid:1,flat\u-no:[1,3]},{uid:2,flat\u-no:2}