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

问题描述 投票:1回答:3

我知道它正在删除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);
javascript algorithm loops splice
3个回答
1
投票

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

0(零)

''或“”(空字符串)

空值

未定义

NaN(例如1/0的结果)

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

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


1
投票

js中的条件是“truthy”或“falsy”,对于数字,除0之外的所有内容都是“truthy”,0是“falsy”。这意味着循环运行直到数组为空,其长度为0,因此是假的。

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

1
投票

while循环将继续运行,直到原始数组为空。 Splice将从原始数组中删除所选元素,并将继续执行,直到删除最后一个元素。

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

© www.soinside.com 2019 - 2024. All rights reserved.