JS/TS 对数组中的对象按对象的值进行去重

时间:2022-07-26
本文章向大家介绍JS/TS 对数组中的对象按对象的值进行去重,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

举个例子:对以下数组按 lastName 的值进行去重

let listData = [
  { firstName: "Rick", lastName: "Sanchez", size: 18 },
  { firstName: "Morty", lastName: "Smith", size: 6 },
  { firstName: "Jerry", lastName: "Smith", size: 3 },
  { firstName: "Beth", lastName: "Smith", size: 0 },
  { firstName: "Summer", lastName: "Smith", size: 0 },
  { firstName: "Rick", lastName: "Sanchez", size: 18 },
  { firstName: "Morty", lastName: "Smith", size: 6 },
];

去重前:

去重后:

一、普通写法

let obj = {};
listData = listData.reduce((item, next) => {
  if (!obj[next.lastName]) {
    item.push(next);
    obj[next.lastName] = true;
  }
  return item;
}, []);

二、TS 写法

const obj: {[key: string]: boolean;} = {};
listData = listData.reduce<ListDataItem[]>((item, next) => {
  if (!obj[next.lastName]) {
    item.push(next);
    obj[next.lastName] = true;
  }
  return item;
},[]);