将数组 ["banana"、"apple"、"orange"、.....等] 拆分为基于其他数组的组,即。 [2,7,3]
Split array ["banana", "apple", "orange", .....etc ] into groups based on other array, ie. [2,7,3]
我有一堆数组,我需要根据另一个匹配数组中的数字将它们分成更小的组。示例:
var myArray1 = ["banana", "apple", "orange", "pear", "pineapple", "grapes", "apricot", "plum"];
var splitArray1 = [3,2,2,1];
我想要一个函数 return 4 个子数组:
[["banana", "apple", "orange"], ["pear", "pineapple"], ["grapes", "apricot"], ["plum"]];
我找到了这段代码,它显然是用来做这个的,但它 return 是完整的数组:
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;
}
这在 google 应用程序脚本中,如果它有所不同。
您可以使用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)
我有一堆数组,我需要根据另一个匹配数组中的数字将它们分成更小的组。示例:
var myArray1 = ["banana", "apple", "orange", "pear", "pineapple", "grapes", "apricot", "plum"];
var splitArray1 = [3,2,2,1];
我想要一个函数 return 4 个子数组:
[["banana", "apple", "orange"], ["pear", "pineapple"], ["grapes", "apricot"], ["plum"]];
我找到了这段代码,它显然是用来做这个的,但它 return 是完整的数组:
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;
}
这在 google 应用程序脚本中,如果它有所不同。
您可以使用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)