Setオブジェクト

Set オブジェクトは、プリミティブ値・オブジェクト参照を問わず、
あらゆる型で一意の値を格納できる1

example.js
const users = new Set(['Tanaka','Ito']); users.add('Yamada') users.add('Tanaka') console.log(...users) // output // "Tanaka" "Ito" "Yamada"

Set を使ったテクニック

配列から重複した値を除外するために Set オブジェクトを用いて実現ができる。

example2.js
let users = ['Tanaka','Ito','Yamada','Tanaka'] console.log(...users) // output // "Tanaka" "Ito" "Yamada" "Tanaka" users = Array.from(new Set(users)) console.log(...users) // output // "Tanaka" "Ito" "Yamada"

GROWI では Tag 検索で次のように実現されている。

該当の File external_link

TagsInput.jsx
async handleSearch(query) { this.setState({ isLoading: true }); const res = await this.props.appContainer.apiGet('/tags.search', { q: query }); res.tags.unshift(query); // selectable new tag whose name equals query this.setState({ resultTags: Array.from(new Set(res.tags)), // use Set for de-duplication isLoading: false, }); }

出典

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Set external_link

Footnotes

  1. コード例では スプレッド構文 を用い要素のみを出力している