首页 > 解决方案 > 如何获得按对象键过滤的唯一对象数组?

问题描述

我有一个对象数组。对象包含有关城市及其几何信息的信息。这是我的数组

> [ {country: "AM", name: "Abovyan", lat: 40.27368, lng: 44.63348},
> {country: "AM", name: "Abovyan", lat: 40.04851, lng: 44.54742},
> {country: "AM", name: "Kapan", lat: 39.20755, lng: 46.4057} ]

如您所见,我有 2 个具有相同名称的对象(例如 Abovyan),但它们的几何信息不同。这个数组是我从一些 API 获得的,我想过滤它。我如何将其过滤为只有一个具有特定键/值的对象,在这种情况下是名称

我想得到一个像这样的过滤数组`

[ {country: "AM", name: "Abovyan", lat: 40.27368, lng: 44.63348},
  {country: "AM", name: "Kapan", lat: 39.20755, lng: 46.4057} ]

标签: javascriptarrays

解决方案


.name在这里,我们使用属性作为对象键从非重复项构建一个对象。完成后,我们从该对象中获取值数组。

var data = [ your data ];

var out = Object.values(
  data.reduce( (c, e) => {
    if (!c[e.name]) c[e.name] = e;
    return c;
  }, {})
);

推荐阅读