以下のような配列があった時に、例えば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ページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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)
- 動作確認用 CodePen: https://codepen.io/jun68ykt/pen/dyPNpEM?editors=0012
(2) lodash の _.chunk を使う
javascript
1var arr2 = _.chunk(arr, 4)
- 動作確認用 CodePen: https://codepen.io/jun68ykt/pen/YzPNGZz?editors=0012
参考になれば幸いです。
投稿2019/12/18 04:36
編集2019/12/18 05:40総合スコア9058
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
総合スコア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総合スコア116694
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
teratail調子悪すぎ、文書がなおせない
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。