while循环如何在没有条件的情况下工作?

How does while loop work without a condition?

我知道它会删除 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);

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 将从原始数组中删除选定的元素,while 将继续直到最后一个元素被删除。

此外,当元素从原始数组中删除时,它们将被推(添加)到新数组中

条件为while(arr.length)。当条件为 truthy 时,while 循环将 运行。在 JavaScript 中,每个条件都是真实的,除非它是以下之一:

false

0 (zero)

'' or "" (empty string)

null

undefined

NaN (e.g. the result of 1/0)

在你的例子中,while 循环将 运行 而数组中有元素(arr.length 大于零),因为如果 arr.length 为零while 循环将停止执行。

另一方面,

arr.splice 每次执行时都会从 arr 中删除一个元素(它正在更改 arr 长度)。因此,当 arr 中没有剩余元素时(因为 arr.splice 将它们全部删除),while 循环将停止。