【もりけん塾】言語チャレンジ@配列内の重複した値を取り除く

JavaScript
管理人
管理人

こんにちは、さえと申します👩‍💻
現在 フロントエンドエンジニアになるために 日々勉強をしています
このブログは その勉強の記録と アウトプットのために運営をしています✨


もりけん塾の課題 言語チャレンジ に取り組んでいます!

handsonFrontend/Work.md at master · kenmori/handsonFrontend
フロントエンドエンジニアを目指す方へのハンズオン資料. Contribute to kenmori/handsonFrontend development by creating an account on GitHub.

課題ではあらかじめinputする値とoutputする値が決まっていて、
inputの値を関数の引数として渡し、outputの値を出力するというものです
ここではinputとoutputの値が合っていればクリアとなります
ブログでは課題を解くために考えたことや、様々な書き方を模索することを目的としています。

課題29

no debule

input

["a", "b", "c", "a", "c", "d"]

output

["a", "b", "c", "d"]

Set

わたし
わたし

Setが使えそう…

const input = ["a", "b", "c", "a", "c", "d"];
const output = [...new Set(input)];

console.log(output); //[ "a", "b", "c", "d" ]
Set - JavaScript | MDN
Set オブジェクトは、プリミティブ値やオブジェクト参照を問わず、あらゆる型で多数の一意の値を格納することができます。

filter × indexOf

考えたこと
考えたこと

filterとindexOfを使用してもできそう
indexOfは一致した値の最初のindexを返すからそれを利用すればよさそう

const input = ["a", "b", "c", "a", "c", "d"];
const result = input.filter((value, i) => input.indexOf(value) === i);
console.log(result);

参考記事

ES6 — Set vs Array — What and when?
What is Set and what is Array?
JavaScriptで重複排除を自分で実装してはいけない(Setを使う) - Qiita
若者とプログラミングをしていて非常にショックを受けたのだが「JavaScript 配列 重複 削除」で検索するとfilterとindexOfを使ったアルゴリズムが検索結果上位に出てくる。これはO(N^2)。計算量の概念がないというの...
タイトルとURLをコピーしました