【发布时间】:2020-05-06 17:01:08
【问题描述】:
在 JS 中进行一些初学者算法练习。我不明白“如果”语句中的“分块”是如何工作的。
我的主要困惑是在迭代到第二个值之后;因为在第一次运行中,它满足最后未定义的标准;所以“1”推入分块变量。因此,一旦第二个变量 2 出现,由于现在定义了 last 并且 Last 的长度不等于“len”参数,它将转到 else 部分。 2 将被推入“last”,它会形成 last =“[1],2”?
然后,当第三个值 (3) 开始出现时,这是我更加困惑的时候。 if 语句的 chunked.push([number]) 如何知道当 number 也是 3 时将 [1],2 准确推送到 chunked 中?是不是省略了3?我知道 last 的长度在这一点上遇到了 len 但它是如何从 [1],2 到块 [1,2] 的?
我假设 3 也会被推入“最后一个”。
如果这听起来也令人困惑,我深表歉意!我在网上看了很多关于解决同样问题的教程,但没有详细解释。
function chunkedArr(arr, len){
const chunked = [];
for (let number of arr){
const last = chunked[chunked.length-1]
console.log(last)
if(!last || last.length === len){
chunked.push( [number]);
} else {
last.push(number)
}
}
return chunked;
}
console.log(chunkedArr([1,2,3,4,5,6],2))
【问题讨论】:
标签: javascript arrays constants chunking