Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript while循环如何在没有条件的情况下工作?_Javascript_Algorithm_Loops_Splice - Fatal编程技术网

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

Javascript while循环如何在没有条件的情况下工作?,javascript,algorithm,loops,splice,Javascript,Algorithm,Loops,Splice,我知道它正在删除数组的前3个元素,并将它们添加到新数组中。但是函数如何继续将随后的数组块添加到新的数组变量中呢 while循环在没有适当条件的情况下如何工作 它如何与此处的splice()协作 function chunkArrayInGroups(arr, size){ let newArr = []; while(arr.length){ newArr.push(arr.splice(0, size)) } return newArr; } chunkArrayIn

我知道它正在删除
数组的前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,因此为falsy

 if(0) alert("never");
 if(1) alert("always");
 let i = 3;
 while(i) console.log(i--);

while循环将一直运行,直到原始数组为空。“拼接”将从原始阵列中删除选定的图元,而“拼接”将继续,直到删除最后一个图元


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

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

假的

0(零)

“”或“”(空字符串)

空的

未定义

NaN(例如,1/0的结果)

在您的情况下,
while
循环将在数组中包含元素时运行(
arr.length
大于零),因为如果
arr.length
为零,while循环将停止执行


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

最终
arr.length
将为零,这将计算为false。在没有递减变量的情况下如何递减?使用
splice
命令可从数组中删除2个元素。所以
length
每次都变小,直到它为0。