劃分陣列——JavaScript


假設我們要編寫一個函式,它將一個包含字串/數字文字的陣列 arr 作為第一個引數,一個數字 n 作為第二個引數。

我們需要返回一個包含 n 個子陣列的陣列,每個子陣列最多包含 arr.length / n 個元素。元素的分佈應該是這樣 −

  • 第一個元素進入第一個子陣列,第二個進入第二個子陣列,第三個進入第三個子陣列,依此類推。
  • 在每個子陣列中有一個元素之後,我們再次從第一個子陣列開始,用它的第二個元素填充第一個子陣列。
  • 類似地,當所有子陣列只有兩個元素後,我們在第一個陣列中填充第三個元素,依此類推。

舉例來說 −

如果輸入陣列是 −

 
const input = [656, 756, 5345, 67, 43, 76, 54, 768, 34];

並且數字 n 是 3,則輸出應該是 −

const output = [
   [ 656, 67, 54 ],
   [ 756, 43, 768 ],
   [ 5345, 76, 34 ]
];

我們將 Array.prototype.reduce() 方法應用於原始陣列,以構建所需陣列。

示例

程式碼如下 −

const input = [656, 756, 5345, 67, 43, 76, 54, 768, 34];
const divideArray = (arr, size) => {
   return arr.reduce((acc, val, ind) => {
      const subIndex = ind % size;
      if(!Array.isArray(acc[subIndex])){
         acc[subIndex] = [val];
      }else{
         acc[subIndex].push(val);
      };
      return acc;
   }, []);
};
console.log(divideArray(input, 3));

輸出

這會在控制檯中產生以下輸出 −

[ [ 656, 67, 54 ], [ 756, 43, 768 ], [ 5345, 76, 34 ] ]

更新於: 2020-09-18

483 次瀏覽

開始你的 職業

完成課程,獲得認證

開始
廣告
© . All rights reserved.