Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据其他数组,即[2,7,3]将数组[“香蕉”、“苹果”、“橙子”等]拆分为组_Javascript_Arrays_Split_Slice - Fatal编程技术网

Javascript 根据其他数组,即[2,7,3]将数组[“香蕉”、“苹果”、“橙子”等]拆分为组

Javascript 根据其他数组,即[2,7,3]将数组[“香蕉”、“苹果”、“橙子”等]拆分为组,javascript,arrays,split,slice,Javascript,Arrays,Split,Slice,我有一堆数组,我需要根据另一个匹配数组中的数字将它们分成更小的组。例如: var myArray1 = ["banana", "apple", "orange", "pear", "pineapple", "grapes", "apricot", "plum"]; var splitArray1 = [3,2,2,1]; 我想要一个返回

我有一堆数组,我需要根据另一个匹配数组中的数字将它们分成更小的组。例如:

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;
}
函数chunkArray(数组,大小){
var chunked_arr=[];
对于(var i=0;i
这是在谷歌应用程序脚本中,如果它有区别的话。

您可以使用

var myArray1=[“香蕉”、“苹果”、“橙子”、“梨”、“菠萝”、“葡萄”、“杏子”、“李子”];
var splitArray1=[3,2,2,1];
const output=splitArray1.map(count=>myArray1.splice(0,count));

console.log(输出)
const output=splitArray1.map(count=>myArray1.splice(0,count))不需要对原始数组进行变异。我使用array.slice()添加了一个新的解决方案,但没有进行变异。:)在第二个代码片段中,您可以内联
startCount+=count
,还可以将其缩短为
const output=splitArray1.map(count=>myArray1.slice(startCount,startCount+=count))尽管有些人可能对可读性有疑问;
+=
中的赋值可能很容易被忽略。@Terry我是不是遗漏了什么,但给定答案中的两个答案不是都是这样的吗?“对于不熟悉“突变”数组的人…”突变是指当你改变某个对象的某个属性时;类似于从数组中添加/删除/排序元素。变异的“问题”是,随着现代应用程序越来越大、越来越分散,人类很难理解变异的所有含义。你的应用程序中一些不相关的部分也可能包含对这个对象的引用,你在这里所做的更改可能会在那里引入意外的行为/错误,这完全是因为它们都使用同一个对象。检查不变性;概念和实施