我知道它正在删除array
的前3个元素并将它们添加到新数组中。但是,该函数如何继续将数组的后续块添加到新的数组变量中?
如果没有适当的条件,while
循环如何工作?
它如何与splice()
合作?
function chunkArrayInGroups(arr, size){
let newArr = [];
while(arr.length){
newArr.push(arr.splice(0, size))
}
return newArr;
}
chunkArrayInGroups(["a", "b", "c", "d"], 2);
条件是while(arr.length)
。 while循环将运行,而该条件是真实的。在JavaScript中,除非是下列之一,否则每个条件都是真实的:
假
0(零)
''或“”(空字符串)
空值
未定义
NaN(例如1/0的结果)
在你的情况下,while
循环将运行,而数组中有元素(arr.length
大于零),因为如果arr.length
为零,while循环将停止执行。
另一方面,arr.splice
每次执行时都会从arr
中删除一个元素(它正在改变arr
长度)。因此,当arr
中没有剩余元素时(因为arr.splice
将它们全部删除),while
循环将停止。
js中的条件是“truthy”或“falsy”,对于数字,除0之外的所有内容都是“truthy”,0是“falsy”。这意味着循环运行直到数组为空,其长度为0,因此是假的。
if(0) alert("never");
if(1) alert("always");
let i = 3;
while(i) console.log(i--);
while循环将继续运行,直到原始数组为空。 Splice将从原始数组中删除所选元素,并将继续执行,直到删除最后一个元素。
此外,当元素从原始数组中删除时,它们将被推送(添加)到新数组中