如何將陣列轉換為 JavaScript 中的複雜陣列?


假設我們要寫一個函式,它接受一個數字陣列和數字 n,其中 n >= 陣列中的任意數字。如果陣列中連續元素的總和超過數字 n,則該函式需要將陣列拆分成子陣列。

例如 −

// if the original array is:
const arr = [2, 1, 2, 1, 1, 1, 1, 1];
// and the number n is 4
// then the output array should be:
const output = [ [ 2, 1 ], [ 2, 1, 1 ], [ 1, 1, 1 ] ];

讓我們編寫此函式的程式碼 −

示例

const arr = [2, 1, 2, 1, 1, 1, 1, 1];
const splitArray = (arr, num) => {
   return arr.reduce((acc, val, ind) => {
      let { sum, res } = acc;
      if(ind === 0){
         return {sum: val, res:[[val]]};
      };
      if(sum + val <= num){
         res[res.length-1].push(val);
         sum +=val;
      }else{
         res.push([val]);
         sum = val;
      };
      return { sum, res };
   }, {
      sum: 0,
      res: []
   }).res;
};
console.log(splitArray(arr, 4));
console.log(splitArray(arr, 5));

輸出

控制檯中的輸出將是 −

[ [ 2, 1 ], [ 2, 1, 1 ], [ 1, 1, 1 ] ]
[ [ 2, 1, 2 ], [ 1, 1, 1, 1, 1 ] ]

更新日期: 2020 年 8 月 26 日

249 次瀏覽

開啟 事業之路

完成課程,獲得認證

開始
廣告