Setオブジェクト
Set オブジェクトは、プリミティブ値・オブジェクト参照を問わず、
あらゆる型で一意の値を格納できる1。
example.jsconst users = new Set(['Tanaka','Ito']); users.add('Yamada') users.add('Tanaka') console.log(...users) // output // "Tanaka" "Ito" "Yamada"
Set を使ったテクニック
配列から重複した値を除外するために Set オブジェクトを用いて実現ができる。
example2.jslet 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 検索で次のように実現されている。
TagsInput.jsxasync 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