もりけん塾の課題 言語チャレンジ に取り組んでいます!
課題ではあらかじめ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" ]
![](http://itosae.com/wp-content/uploads/cocoon-resources/blog-card-cache/adec6b7fe735d4bf667370b32e75dcc6.png)
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);
参考記事
![](http://itosae.com/wp-content/uploads/cocoon-resources/blog-card-cache/27b69e85230cc563ed3f1f4b5404b726.png)
ES6 — Set vs Array — What and when?
What is Set and what is Array?
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9SmF2YVNjcmlwdCVFMyU4MSVBNyVFOSU4NyU4RCVFOCVBNCU4NyVFNiU4RSU5MiVFOSU5OSVBNCVFMyU4MiU5MiVFOCU4NyVBQSVFNSU4OCU4NiVFMyU4MSVBNyVFNSVBRSU5RiVFOCVBMyU4NSVFMyU4MSU5NyVFMyU4MSVBNiVFMyU4MSVBRiVFMyU4MSU4NCVFMyU4MSU5MSVFMyU4MSVBQSVFMyU4MSU4NCVFRiVCQyU4OFNldCVFMyU4MiU5MiVFNCVCRCVCRiVFMyU4MSU4NiVFRiVCQyU4OSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnR4dC1jbGlwPWVsbGlwc2lzJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MjViYjYyM2MyNzg4MDcyYmYxNGEyYmNlNzA5N2QyOGY&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwbmV0ZWJha2FyaSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MjQzNDg4ZmYwODE3YWI2MzliOWEyODE1ODNiZDM2NDU&blend-x=142&blend-y=491&blend-mode=normal&s=b1f621219da53c3a7bef18e4a373dd48)
JavaScriptで重複排除を自分で実装してはいけない(Setを使う) - Qiita
若者とプログラミングをしていて非常にショックを受けたのだが「JavaScript 配列 重複 削除」で検索するとfilterとindexOfを使ったアルゴリズムが検索結果上位に出てくる。これはO(N^2)。計算量の概念がないというの...