我的例子:切片阵列到多个份
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]]
'let push = result.push;'提取函数,使其不再与任何特定对象关联。你需要使用'push.call(result,temp)' – 4castle