1. 程式人生 > >js移除陣列中元素-- 倒著遍歷陣列,繞過改變下標的問題

js移除陣列中元素-- 倒著遍歷陣列,繞過改變下標的問題

題目描述
移除陣列 arr 中的所有值與 item 相等的元素,直接在給定的 arr 陣列上進行操作,並將結果返回
示例1
輸入

[1, 2, 2, 3, 4, 2, 2], 2
輸出

[1, 3, 4]

我一開始還好死不死用的foreach,忽略了改變陣列之後,下標也改變的情況,正好被改的那個index上的元素就遍歷不到了。後來用for來控制index –,程式碼如下:

function removeWithoutCopy(arr, item) {
     for(var i = 0; i < arr.length; i++){
        if(arr[i] === item ){
            arr.splice(i,1
) i-- }
} return arr }

但後來看到一個更好的,不用動下標,直接倒著遍歷。

連結:https://www.nowcoder.com/questionTerminal/a93dd26ebb8c425d844acc17bcce9411
來源:牛客網

function removeWithoutCopy(arr, item) {
  for(var i = arr.length-1;i >= 0;i--){
      var value = arr[i];
      if(value == item){
          arr.splice(i,1
); } } return arr; }