javascript陣列如何刪除所有的指定值陣列項

螞蟻小編發表於2017-03-25

本章節介紹一下如何刪除陣列中的指定項,程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
var theArray=[1,2,3,4,5,3,2];
function done(val,arr){
  var resultArray;
  function remove(){
    for(var index=0;index<arr.length;index++){
      if(val==arr[index]){
        arr.splice(index,1);
        if(index==arr.length){
          resultArray=arr;
          return;
        }
        else{
          break; 
        }
      }
      else{
        if(index==arr.length){
          resultArray=arr;
          return;
        }
      }
    }
    remove();
  }
  remove();
  return resultArray;
}
console.log(done(2,theArray));

上面的程式碼實現了我們的要求,可以刪除陣列中指定的元素,下面介紹一下它的實現過程。

一.程式碼註釋:

1.var theArray=[1,2,3,4,5,3,2],宣告一個陣列,要刪除的就是此陣列中的元素。

2.function done(val,arr){},此函式可以實現刪除重複元素的功能,第一個引數是要刪除的元素值,第二個是陣列物件。

3.var resultArray,宣告一個變數用來儲存最終的結果陣列。

4.function remove(){},此函式用作遞迴之用。

5.for(var index=0;index<arr.length;index++),遍歷陣列。

6.if(val==arr[index]),判斷要刪除的值是和指定索引的陣列元素值相等。

7.arr.splice(index,1);

  if(index==arr.length){

    resultArray=arr;

    return;

}

如果有相等的就刪除指定索引的元素,同時判斷當前的索引是否和當前陣列元素長度相等,如果相等說明已經遍歷判斷完畢,那麼就將陣列的引用賦值給變數resultArray,並跳出函式的執行。

8.else{break;},如果沒有遍歷完成,那麼就跳出此次for迴圈,遞迴呼叫remove()函式,重新開始一個新的迴圈,之所以這樣是因為,當前的陣列arr的數目已經發生變化,在用當前的for迴圈就有可能出錯。

9.else{

  if(index==arr.length){

    resultArray=arr;

    return;

  }

}

如果陣列中沒有與要刪除的值相同的元素,那麼就執行相應的操作。

10.remove(),這個是遞迴執行函式用的。

11.remove(),這個就是普通的用法,執行此函式。

12.return resultArray,返回最終結果。

二.相關閱讀:

1.splice()函式可以參閱javascript 陣列 splice()一章節。 

2.for迴圈可以參閱javascript for迴圈語句一章節。

相關文章