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

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

新規登録して質問してみよう
ただいま回答率
85.47%
JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

5回答

1574閲覧

配列を一定数ごとの配列に分割したい

bravo

総合スコア14

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2019/12/18 04:13

以下のような配列があった時に、例えば4つごとに配列を分割して、下のような配列に組み替えたいです。配列は不定数だとして、どのような方法が考えられますか?

javascript

1//元配列 2var arr = [3,3,9,2,4,5,1,2,9,0] 3//分割後配列 4var arr2 = [[3,3,9,2],[4,5,1,2],[9,0]] 5

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

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

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

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

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

guest

回答5

0

こんにちは

2つコードを挙げます。

(1) reduce を使う

javascript

1var arr2 = arr.reduce( 2 (a, e, i) => i % 4 ? 3 [...a.slice(0, a.length-1), [...a[a.length-1], e] ] 4 : 5 [...a, [e]] 6 ,[] 7)

(2) lodash の _.chunk を使う

javascript

1var arr2 = _.chunk(arr, 4)

参考になれば幸いです。

投稿2019/12/18 04:36

編集2019/12/18 05:40
jun68ykt

総合スコア9058

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

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

0

配列は不定数だとして、どのような方法が考えられますか?

コードではなく、方法を問う趣旨を信じて、回答します。
for 文を使う方法が実直かつ高速と思います。

  1. i = 0 を初期値として、4ずつ加算するfor文を作る
  2. i を開始インデックスとして、i+4 または「配列の length」の内、小さな方を終了インデックスとして、Array#slice
  3. Array#push

Re: bravo さん

投稿2019/12/18 23:56

think49

総合スコア18166

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

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

0

組み換えの際、元配列を壊していいなら以下が簡単でしょう

JavaScript

1var arr = [3, 3, 9, 2, 4, 5, 1, 2, 9, 0]; 2var arr2 = []; 3while (arr.length) arr2.push(arr.splice(0, 4)); 4console.log(arr2); 5//=> [[3, 3, 9, 2], [4, 5, 1, 2], [9, 0]]

※元配列arrは空になります

投稿2019/12/18 15:59

shinji709

総合スコア805

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

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

0

reduce, _.chunkがあがっていたので別のコードを書いてみました。
ご参考までにどうぞ。

javascript

1function splitArray(arr, len) { 2 const size = Math.ceil(arr.length / len); 3 return [...new Array(size)].map((_, i) => arr.slice(i * len, (i + 1) * len)); 4} 5 6var arr = [3, 3, 9, 2, 4, 5, 1, 2, 9, 0]; 7var arr2 = splitArray(arr, 4); 8console.log(arr2); // [[3, 3, 9, 2], [4, 5, 1, 2], [9, 0]]

投稿2019/12/18 05:50

tutti56

総合スコア86

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

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

0

javascript

1var per=4; 2var a= [3,3,9,2,4,5,1,2,9,0] 3var b=Array(parseInt((a.length-1)/per)+1).fill(null).map((x,y)=>a.filter((i,j)=>(j>=y*per)&&(j<(y+1)*per))); 4console.log(b);

調整

投稿2019/12/18 05:53

編集2019/12/18 05:54
yambejp

総合スコア114883

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

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

yambejp

2019/12/18 05:55

teratail調子悪すぎ、文書がなおせない
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問