我的例子:切片陣列到多個份
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