javascript - 将数组切片为多个部分

标签 javascript arrays

我的例子:

let arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18];

let slice = (source, index) => source.slice(index, index + 4);

let length = arr.length;

let index = 0;

let result = [];

while (index < length) {
  let temp = slice(arr, index);
  
  result.push(temp);
  
  index += 4;
}

console.log(result);

记录:

[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[17,18]]

我想将数组分割为每 4 个项目的多个部分 [1,2,3,4] [5,6,7,8]...

代码运行良好。

我有 2 个问题:

1/.还有另一种方法可以通过使用内联代码来做到这一点吗?例如:result = arr.slice(...)

2/。在我定义之后:

let push = result.push;

为什么我仍然不能使用:

push(temp)

错误消息:

Uncaught TypeError: Array.prototype.push called on null or undefined

更新:我已根据答案更新了解决方案。希望对您有所帮助。

let arr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18];

let result = [];

arr.forEach((x,y,z) => !(y % 4) ? result.push(z.slice(y, y + 4)) : '');

console.log(result);

记录:

[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[17,18]]

最佳答案

简单的方法

var chunckArray = function(array, chunkCount){
     var chunks = [];
     while(array.length){
         chunks.push(array.splice(0, chunkCount);
     }
     return chunks;
}

非消耗性方式:

var chunckArray = function(array, chunkCount){
     var chunks = [],  i, j;
     for (i = 0, j = array.length; i<j; i+= chunkCount) {
         chunks.push(array.slice(i, i + chunkCount); 
     }
     return chunks;
}

关于javascript - 将数组切片为多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42371963/

相关文章:

JavaScript 获得 Audio.setSinkId 的权限

javascript - 您如何抓取字段以进行自动标记?

javascript - Dynamics CRM 在 OnSave 事件期间保留全局数组值

arrays - 获取 bash 数组的所有元素,除了第一个

java - 在 JAVA 中如何获取 JSON 属性并将其存储在数组中?

python - 连接两个一维 NumPy 数组

javascript - Angular 2 : uiRouter get current state params in root component

javascript - 无法访问下载的 html 文件的全部内容

javascript - 使图像在div内随机移动

javascript - 动态生成带有变量名和字符串的数组