将数组["banana","apple","orange",…..etc]拆分为基于其他数组的组,即。[2,7,3]
我有一堆数组,我需要根据另一个匹配数组中的数字将它们分成更小的组。例子:
var myArray1 = ["banana", "apple", "orange", "pear", "pineapple", "grapes", "apricot", "plum"];
var splitArray1 = [3,2,2,1];
我想要一个函数来返回 4 个子数组:
[["banana", "apple", "orange"], ["pear", "pineapple"], ["grapes", "apricot"], ["plum"]];
我发现这段代码显然是为了做到这一点,但它返回了完整的数组:
function chunkArray(array, size) {
var chunked_arr = [];
for (var i = 0; i < array.length; i++) {
var last = chunked_arr[chunked_arr.length - 1];
if (!last || last.length === size) {
chunked_arr.push([array[i]]);
} else {
last.push(array[i]);
}
}
return chunked_arr;
}
如果它有所不同,这在谷歌应用程序脚本中。
回答
您可以使用Array.splice()
var myArray1 = ["banana", "apple", "orange", "pear", "pineapple", "grapes", "apricot", "plum"];
var splitArray1 = [3,2,2,1];
const output = splitArray1.map(count => myArray1.splice(0, count));
console.log(output)
以上解决方案更新了原始myArray1数组。这是使用Array.slice() 的另一个解决方案
var myArray1 = ["banana", "apple", "orange", "pear", "pineapple", "grapes", "apricot", "plum"];
var splitArray1 = [3,2,2,1];
var startCount = 0;
const output = splitArray1.map(count => myArray1.slice(startCount, startCount += count));
console.log(output)
THE END
二维码