1. ホーム
  2. javascript

[解決済み] 配列から重複を取り除く

2022-11-06 21:50:11

質問

次のようなオブジェクトの配列があります。

var array = [
    {id:123, value:"value1", name:"Name1"},
    {id:124, value:"value2", name:"Name1"},
    {id:125, value:"value3", name:"Name2"},
    {id:126, value:"value4", name:"Name2"}
    ...
];

見ての通り、いくつかの名前が繰り返されています。私は名前だけの新しい配列を取得したいのですが、いくつかの名前が繰り返される場合、私は再びそれを追加したくありません。このような配列にしたいのです。

var newArray = ["Name1", "Name2"];

でやろうとしているのは map :

var newArray = array.map((a) => {
    return a.name;
});

しかし、問題はこれが返ってくることです。

newArray = ["Name1", "Name1", "Name2", "Name2"];

の中で条件を設定するにはどうしたらよいでしょうか? map の中で、すでに存在する要素を返さないようにするにはどうしたらよいでしょうか?私はこれを map または他のECMAScript 5またはECMAScript 6の機能でこれを行いたいのです。

どのように解決するのですか?

ES6では Set を使用して、オブジェクトの名前のみをマッピングした後、一意な値にすることができます。

この提案では の拡散構文 ... を使って、新しい配列に項目を集めることができます。

const array = [{ id: 123, value: "value1", name:"Name1" }, { id: 124, value: "value2", name: "Name1" }, { id: 125, value: "value3", name: "Name2" }, { id: 126, value: "value4", name: "Name2" }],
      names = [...new Set(array.map(a => a.name))];

console.log(names);