javascript - Typescript:仅当某些字段相等时才获取重复对象

标签 javascript typescript

因此,如果对象相等,就会有很多答案。但就我而言,仅当某些字段相等时我才希望返回,并且我无法找到任何答案。

假设我有这个对象数组:

let obj = [
  { name: 'bob', adress: 'somewhere1', country: 'sweden', nr: '1235'},
  { name: 'bob', adress: 'somewhere1', country: 'norway', nr: '7656'},
  { name: 'john', adress: 'somewhere2', country: 'denmark', nr: '54534'},
  { name: 'john', adress: 'somewhere2', country: 'US', nr: '3333'},
  { name: 'steven', adress: 'somewhere3', country: 'UK', nr: '5467'}
]

我想按名称和地址过滤它们(如果它们相等),将它们添加到新数组中:

let newObj = [
  [{
      name: 'bob',
      adress: 'somewhere1',
      country: 'sweden',
      nr: '1235'
    },
    {
      name: 'bob',
      adress: 'somewhere1',
      country: 'norway',
      nr: '7656'
    }
  ],
  [{
      name: 'john',
      adress: 'somewhere2',
      country: 'denmark',
      nr: '54534'
    },
    {
      name: 'john',
      adress: 'somewhere2',
      country: 'US',
      nr: '3333'
    }
  ],
  [{
    name: 'steven',
    adress: 'somewhere3',
    country: 'UK',
    nr: '5467'
  }]
]

最佳答案

const arr = [
  { name: 'bob', address: 'somewhere1', country: 'sweden', nr: '1235'},
  { name: 'bob', address: 'somewhere1', country: 'norway', nr: '7656'},
  { name: 'john', address: 'somewhere2', country: 'denmark', nr: '54534'},
  { name: 'john', address: 'somewhere2', country: 'US', nr: '3333'},
  { name: 'steven', address: 'somewhere3', country: 'UK', nr: '5467'}
];

const grouped = Object.values(arr.reduce((accum, item) => {
  const nameAndAddress = `${item.name}${item.address}`;
  if (!accum[nameAndAddress]) accum[nameAndAddress] = [];
  accum[nameAndAddress].push(item);
  return accum;
}, {}));

这将使用组合的名称和地址作为唯一标识符,并将记录分离到该标识符上的数组中,然后将这些数组从结果对象中拉出到所需输出中的数组中。

关于javascript - Typescript:仅当某些字段相等时才获取重复对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60640953/

相关文章:

javascript - 通过 jQuery Ajax 将数组和表单数据一起发布时出现问题

javascript - 错误 : Cannot invoke an expression whose type lacks a call signature

javascript - 如何在 TypeScript 项目中重用现有的 C# 类定义

typescript - 类型 'null' 不能用作索引类型

javascript - 如何让叠加层定位在图像上?

javascript - jQuery - 循环浏览图像并隐藏除单击图像之外的所有图像

javascript - nodeJs 回调简单示例

javascript - 使用 map/filter/reduce 根据百分比对用户进行排名

javascript - Typescript angularjs $http 获取响应类型(避免使用 <any>)

node.js - Firebase Functions 在 Firebase 部署中工作,但不能在本地工作