首页 > 解决方案 > 从数组中删除重复项

问题描述

我想从数组中删除对象的每个副本:

  const object = [
    { label: "SUA", value: "sua" },
    { label: "SUA", value: "sua" },
    { label: "Florida", value: "florida" }
  ];
  console.log(object.map(i=> [...new Set(i)]))

最后我必须得到这样的:

const object = [
    { label: "Florida", value: "florida" }
  ];

如何在我的代码中执行此操作?

标签: javascriptarraysduplicates

解决方案


无论您希望在数组中保留多少个每个元素的副本,都可以根据定义创建一个 Map并将每个对象Map<Location, number>的出现次数制成表格。Location之后,获取每个元素并将其附加到数组中一次。


type Location = {label: string, value: string};

const object: Location[] = [
    { label: "SUA", value: "sua" },
    { label: "SUA", value: "sua" },
    { label: "Florida", value: "florida" }
];
const objects: Map<Location, number> = new Map();

for (const location of object)
    if (objects.has(location))
        objects.set(location, objects.get(location) + 1);
    else
        objects.set(location, 1);

const filtered: Location[] = [];

for (const location of objects)
    if (location[1] === 1) // You change 1 to any value depending on how many copies of each you'd like.
        filtered.push(location[0];

注意为了清楚起见,这是 TypeScript,但概念是相同的。


推荐阅读