【发布时间】:2021-04-13 01:02:14
【问题描述】:
我有一堆数组,我需要根据另一个匹配数组中的数字将它们分成更小的组。示例:
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;
}
这在谷歌应用程序脚本中,如果它有所作为。
【问题讨论】:
-
@Terry 我是否遗漏了什么,但给定的dup 的两个答案都没有回答这个问题吗?
-
“对于不熟悉‘变异’数组的人......” 变异是指你改变对象的某些属性;就像从数组中添加/删除/排序元素一样。突变的“问题”在于,随着现代应用程序的规模更大、分布更广,人类很难掌握突变的所有含义。您的应用程序的某些不相关部分也可能包含对此对象的引用,并且您在此处的更改可能会在那里引入意外的行为/错误,这仅仅是因为它们都使用同一个对象的纯粹巧合。检查不变性;概念与实现
标签: javascript arrays split slice