Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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的多个数组在java脚本中该单个数组基于id吗?_Javascript_Jquery - Fatal编程技术网

Javascript 具有单个id的多个数组在java脚本中该单个数组基于id吗?

Javascript 具有单个id的多个数组在java脚本中该单个数组基于id吗?,javascript,jquery,Javascript,Jquery,嗨,我有一个这样的多数组列表 jquery([ { id:2, count:23, numberOfType:34 }, { id:2, count2:53, numberOfType2:34 }, { id:2, count3:53, numberOfType3:34 }, { id:2, count:23, numberOfType:34 }, { id:21, count2:53, numberOfType2:34 }, {

嗨,我有一个这样的多数组列表

jquery([
 {
  id:2,
  count:23,
  numberOfType:34
},
{
  id:2,
  count2:53,
  numberOfType2:34
},
{
  id:2,
  count3:53,
  numberOfType3:34
},
{
  id:2,
  count:23,
  numberOfType:34
},
{
  id:21,
  count2:53,
  numberOfType2:34
},
{
  id:21,
  count3:53,
  numberOfType3:34
},
])
我想把这个格式化成这个数据

就像是

jquery([
  {
  id:2,
  count:23,
  count2:53,
  count3:53,
  numberOfType:34,
  numberOfType2:34,
 numberOfType3:34
},
{
  id:21,
  count:23,
  count2:53,
  count3:53,
  numberOfType:34,
  numberOfType2:34,
 numberOfType3:34
}
])

通过遍历数组并检查是否存在。如果已经存在具有当前项目id的项目,则通过将属性复制到该项目中

const数据=[
{
id:2,
计数:23,
型号:34
},
{
id:2,
count2:53,
数字类型2:34
},
{
id:2,
count3:53,
数字3:34
},
{
id:2,
计数:23,
型号:34
},
{
id:21,
count2:53,
数字类型2:34
},
{
id:21,
count3:53,
数字3:34
}
];
const reduced=数据。reduce((附件,项目)=>{
const found=acc.find(i=>i.id==item.id);
如果(找到){
对象。分配(已找到,项);
}否则{
acc.push(Object.assign({},item));
}
返回acc;
}, []);

控制台日志(减少)只需使用
对象。分配
对象。值

var output = Object.values( arr.reduce( (a, c) => 
         (a[c.id] = Object.assign( {}, a[c.id], c ), a) ,  //assign new properties to a[c.id]
         {} ) ); //accumulator 
演示

var-arr=[{
id:2,
计数:23,
型号:34
},
{
id:2,
国家2:53,
第2类:34
},
{
id:2,
国家3:53,
编号3:34
},
{
id:2,
计数:23,
型号:34
},
{
id:21,
国家2:53,
第2类:34
},
{
id:21,
国家3:53,
编号3:34
},
];
变量输出=对象值(arr.reduce((a,c)=>
(a[c.id]=Object.assign({},a[c.id],c),a),//将新属性分配给[c.id]
{})); //累加器
控制台日志(输出)您可以根据
id
进行分组

var数组=[{id:2,count:23,numberOfType:34},{id:2,count2:53,numberOfType2:34},{id:2,count3:53,numberOfType3:34},{id:2,count:23,numberOfType:34},{id:21,count2:53,numberOfType2:34},{id:21,count3:53,numberOfType3:34}],
结果=[
大堆
.reduce((m,o)=>m.set(o.id,Object.assign(m.get(o.id)|{},o)),新映射)
.values()
];
控制台日志(结果)

.as console wrapper{max height:100%!important;top:0;}
您可以使用
reduce
检查累加器中是否存在该id,或者附加它

const arr=[
{
id:2,
计数:23,
型号:34
},
{
id:2,
count2:53,
数字类型2:34
},
{
id:2,
count3:53,
数字3:34
},
{
id:2,
计数:23,
型号:34
},
{
id:21,
count2:53,
数字类型2:34
},
{
id:21,
count3:53,
数字3:34
},
]
const newArr=arr.reduce((acc,newObj)=>{
let index=acc.findIndex(obj=>obj.id==newObj.id);
如果(索引>-1){
acc=[…acc.slice(0,索引),{…acc[index],…newObj},…acc.slice(索引+1)]
}
否则{
acc.push(newObj);
}
返回acc
}, [])

console.log(newArr)
您想删除重复的项目!然后变成一个数组,最好说这个问题!是的,但我想在单个数组中复制id为的所有数据对象属性中的数组不是更有意义吗?例如,
{id:2,data:[{count:23,type:34},{count:53,type:34}]…
。而且,你似乎没有自己努力实现这一点。记住,我们来这里是调试代码,而不是为你编写代码。来吧,伙计们,为什么不投票?@Pedram,因为“这个问题没有显示任何研究工作”,这正是否决票的定义。要求不是问题,特别是代表人数超过2万的人应该知道这一点。哇,我真的想这样做,谢谢,谢谢,谢谢,谢谢,谢谢:)谢谢@gurvinder372,真的谢谢:)@RohitAzad,不客气。这个问题比你之前的问题好:)…谢谢@Nina Scholz给我答案谢谢@Shubham Khatri:)