質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1254閲覧

JavaScript 初級アルゴリズム問題

tamamo11

総合スコア7

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

1クリップ

投稿2020/03/22 10:32

英語の問題集をやってるんですが解答みてもいまいちわからないので質問させてください。
forof構文はわかってるつもりなんですが、定数lastはなんのために設定してるのか
if文でなにをチェックしてるのかよくわからないです。
よろしくお願いします。

Javascript

1/* 2chunk(array,size) 3こういう結果になる関数を作る 4 5chunk([1,2,3,4],2) --- [[1,2],[3,4]] 6chunk([1,2,3,4,5],2) --- [[1,2],[3,4],[5]] 7chunk([1,2,3,4,5,6,7,8],3) --- [[1,2,3][4,5,6],[7,8]] 8chunk([1,2,3,4,5],4) --- [[1,2,3,4],[5]] 9chunk([1,2,3,4,5],10) --- [[1,2,3,4,5]] 10 11*/ 12 13let arr = [1,2,3,4,5]; 14 15function chunk(array, size) { 16 const chunked = []; 17 18 for (let element of array) { 19 const last = chunked[chunked.length - 1]; 20 if (!last || last.length === size) { 21 chunked.push([element]); 22 } else { 23 last.push(element); 24 } 25 } 26 27 return chunked; 28} 29 30chunk(arr, 2);
DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/03/22 12:09

>英語の問題集を 書籍名等出された方が良いかと思います
guest

回答1

0

ベストアンサー

まずchunkedがどのように変化していくかをイメージすることが必要です。

chunk([1,2,3,4,5],2)の場合[[1,2],[3,4],[5]]が出力されますが、この場合chunkedfor文がループするたびに次のように変化します。

  1. []
  2. [[1]]
  3. [[1, 2]]
  4. [[1, 2], [3]]
  5. [[1, 2], [3, 4]]
  6. [[1, 2], [3, 4], [5]]

目的は入力の配列をsizeごとにパッキングすることなので、各ステップで何をすればいいかというと、chunkedの中の最後の要素last(配列)がすでに長さsizeになっているかをチェックして(last.length === size)、そうであれば新しいパックに次の要素を追加して、そうでなければlastに追加することになります。ただし、一番最初はlastundefinedになるので、そのときは新しいパックを作る必要があります(!last)。

投稿2020/03/22 10:51

karamarimo

総合スコア2551

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tamamo11

2020/03/22 14:27

ありがとうございます。 大変よくわかりました。 いきなりlastがundefinedになるので混乱したようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問