如何將陣列轉換為 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 ] ]
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP