JavaScript 配列の中に重複があるものを抽出する方法
配列の中に重複があるものを抽出する方法です。
例えば以下の配列があるとします。
const arr = ['hoge', 'foo', 'bar', 'hoge']
hoge が重複するので、['hoge’] という配列を返したい場合、以下のようにすることで実現可能です。
const arr = ['hoge', 'foo', 'bar', 'hoge']
const getDuplicatedValues = (arr) => {
return Array.from(
new Set(
arr.filter((value, _index, srcArr) => srcArr.indexOf(value) !== srcArr.lastIndexOf(value))
)
)
}
const result = getDuplicatedValues(arr)
console.log(result) // ['hoge']
値が重複する場合、配列の中ではじめにその値が見つかるindexと最後にその値が見つかるindexが違います。
これを条件にして、満たすものをfilterで抽出します。
new Set() しているのは、['hoge’, 'hoge’] となるのを最後に['hoge’]にするためです。
最近のコメント