javascript Angular 从响应中查找对象数组的重复值?

rjee0c15  于 2023-02-21  发布在  Java
关注(0)|答案(1)|浏览(120)

来自响应的组对象数组。

[
  { name: ramesh, age: 12, city: mumbai },
  { name: ramesh, age: 12, city: mumbai },
  { name: amit, age: 13, city: mumbai },
  { name: amit, age: 13, city: mumbai },
  { name: ganesh, age: 14, city: mumbai },
  { name: ganesh, age: 14, city: mumbai },
  { name: ganesh, age: 14, city: mumbai },
  { name: ganesh, age: 14, city: mumbai },
];

我想这样组队。

[
  { name: ramesh, age: 12, city: mumbai },
  { name: "", age: "", city: mumbai },
  { name: amit, age: 13, city: mumbai },
  { name: "", age: "", city: mumbai },
  { name: ganesh, age: 14, city: mumbai },
  { name: "", age: "", city: mumbai },
  { name: "", age: "", city: mumbai },
  { name: "", age: "", city: mumbai },
];

我尝试了Angular 中的过滤、减少功能
我需要找到重复的值和第一个重复的值将显示确切的和其他重复的值将转换为空字符串

dgsult0t

dgsult0t1#

使用数组的reduce方法用分组数据创建一个新的对象数组

const arr = [
  {name: 'ramesh', age: 12, city: 'mumbai'},
  {name: 'ramesh', age: 12, city: 'mumbai'},
  {name: 'amit', age: 13, city: 'mumbai'},
  {name: 'amit', age: 13, city: 'mumbai'},
  {name: 'ganesh', age: 14, city: 'mumbai'},
  {name: 'ganesh', age: 14, city: 'mumbai'},
  {name: 'ganesh', age: 14, city: 'mumbai'},
  {name: 'ganesh', age: 14, city: 'mumbai'}
];

const groupedArray = arr.reduce((acc, curr) => {
  const existingObj = acc.find(obj => obj.name === curr.name && obj.age === curr.age && obj.city === curr.city);
  if (existingObj) {
    acc.push({name: '', age: '', city: curr.city});
  } else {
    acc.push(curr);
  }
  return acc;
}, []);

console.log(groupedArray);

相关问题