[英]infinite loop occurs when using array.splice inside a for loop
我编写此代码,用于在任何数组项大于它时插入第二个参数。 但突然出现无限循环。 ('result.splice(i, 0, num)' 导致它)有人能告诉我为什么吗?!
function getIndexToIns(arr, num) {
let result = arr.sort(function(a, b){return a - b})
for(let i = 1; i <= result.length ; i++){
result.splice(i, 0, num)
}
return result;
}
getIndexToIns([40, 60, 20, 0], 50);
您的
result.splice(i, 0, num)
在索引处插入一个新值并增加数组的长度。
除此之外,您还可以遍历最后一个给定的索引。
相反,您可以从末尾进行排序和迭代,以用最大想要的值替换更粗的值。
function sortAndReplaceGreaterValues([...array], number) { array.sort((a, b) => a - b); let i = array.length; while (i--) { if (array[i] < number) break; array[i] = number; } return array; } console.log(sortAndReplaceGreaterValues([40, 60, 20, 0], 50));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.