为了账号安全,请及时绑定邮箱和手机立即绑定

拆分具有特定块大小的数组

拆分具有特定块大小的数组

德玛西亚99 2022-10-13 16:58:07
例如我有一个块数组,这个数组有各个块的大小。let example = [3,3]; // Chunks arraylet auxarrayindex = [1,2,3,4,5,6]; // Array that I want to splicelet example2 = [3,2,3]; // Chunks arraylet auxarrayindex2 = [1,2,3,4,5,6,7,8]; // Array that I want to splice我想要的结果是:[1,2,3],[4,5,6] and the second [1,2,3],[4,5],[6,7,8]这是我的代码:for (let auxexample = 0; auxexample < example.length; auxexample++) {    finalauxarray.push(auxarrayindex.slice(0, example[auxexample]));}我的代码的结果是:[1,2,3],[1,2,3] and the second [1,2,3],[1,2],[1,2,3]
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

问题是您的切片总是从相同的索引 (0) 开始。


使用在i获取块时增加的变量(如 ):


let example = [3,2,3];

let auxarrayindex = [1,2,3,4,5,6,7,8];


let finalauxarray = [];

let i = 0;

for (let auxexample = 0; auxexample < example.length; auxexample++) {

   finalauxarray.push(auxarrayindex.slice(i, i+=example[auxexample]));

}


console.log(finalauxarray);


你也可以使用map你的循环:


let example = [3,2,3];

let auxarrayindex = [1,2,3,4,5,6,7,8];


let i = 0;

let finalauxarray = example.map(size => auxarrayindex.slice(i, i+=size));


console.log(finalauxarray);


查看完整回答
反对 回复 2022-10-13
?
侃侃无极

TA贡献2051条经验 获得超10个赞

问题是因为切片参数错误您可以在此链接上了解有关切片如何工作的更多信息

https://www.w3schools.com/jsref/jsref_slice_array.asp

它将开始位置作为第一个参数,将不包含在结果中的结束位置作为最后一个参数

您也可以为此使用 splice https://www.w3schools.com/jsref/jsref_splice.asp

希望有帮助


查看完整回答
反对 回复 2022-10-13
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

工作示例使用splice而不是slice我认为它为这个特定用例提供了一个稍微干净的 API:


let example = [3, 3];

let auxArrayIndex = [1, 2, 3, 4, 5, 6];

let example2 = [3, 2, 3];

let auxArrayIndex2 = [1, 2, 3, 4, 5, 6, 7, 8];


function getChunks(chunkSizes, array) {

  let result = [];

  for (let chunkSize of chunkSizes) {

    result.push(array.splice(0, chunkSize));

  }

  return result;

}


let chunks = getChunks(example, auxArrayIndex);

let chunks2 = getChunks(example2, auxArrayIndex2);


console.log(chunks); // logs "[1,2,3], [4,5,6]"

console.log(chunks2); // logs "[1,2,3], [4,5], [6,7,8]"


查看完整回答
反对 回复 2022-10-13
  • 3 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号