10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ゆめみからの挑戦状3に挑戦した

Posted at

ゆめみからの挑戦状?

無職やめ太郎(本名)さんが出題しているプチ問題。
今回の問題はこちら。

ヒントと思しき?ツイート

このツイートと一緒にツイート履歴に出てた感じなのでもうこれほぼ答えやん的な気がした

なんか悔しいのでリファレンスもガン見する

Arrayに関する一覧を見たいのでArrayのページを見て使えるメソッドを探す
→やっぱりflatMapなのかなぁ。とりあえず書いてみる

なんか納得できない


const array1 = [1, 2, 3, 4, 5, 6]
const array2 = array1.flatMap(a => a % 2 ? [a, a, a] : [a, a])

console.log(array2)

別にこれで正解な気がする。
でもなんか、こう、もやっとする。
同じ要素しか埋めてないならなんかこう…できないかな?

提出した回答


const array1 = [1, 2, 3, 4, 5, 6]
const array2 = array1.flatMap(a => Array(a % 2 ? 3 : 2).fill(a))

console.log(array2)

fillメソッドを見つけたのでぶちこんでみました。
新しいArrayを要素いくつで作るか、という部分で三項演算子で2か3か設定し、値をその数分ぶっこみflatMap。
これでいけるやろ!って思ってました。当時は。(別にちゃんと動くので正解なんでしょうけどね)

改善点

そうじゃん奇数は3(2 + 1)、偶数は2(2 + 0)の要素なら要素数計算で求められるじゃん…
やるならここまで突き詰めるべきでしたね。詰めが甘かったです…

正解解説&その他の回答

【挑戦状の正解発表&解説】配列の要素を増やすには?〜面白解答も紹介〜
無職やめ太郎さん(本名)さんによる解説記事です。

あとがき

引用RTを見るだけで新しい発見がたくさんありました。
社内では完全に井の中の蛙をしてますので、外部の方のコードを見るのは新鮮でした。企画ありがとうございました!

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?