簡體   English   中英

在 for 循環中使用 array.splice 時發生無限循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM