JavaScript 刪除陣列指定元素

admin發表於2018-11-22

下面將通過程式碼例項介紹一下如何刪除陣列中的元素。

可以根據元素值刪除,也可以根據元素索引刪除,本文提供的內容可以滿足如下四種需求:

(1).刪除第一個具有指定值元素。

(2).刪除所有具有指定值的元素。

(3).刪除第N個具有指定值的元素。

(4).刪除第N個元素,對刪除元素的值不做要求。

首先給出程式碼,再詳細分解一下它的實現過程。

一.刪除第一個或者所有元素:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
Array.prototype.removeByValue = function(val,flag){
  for(let i=0; i<this.length; i++) {
    if(this[i] == val) {
      this.splice(i, 1);
      i=-1;
      if(!flag) break;
    }
  }
}
let arr=["螞蟻部落", 4, "antzone", "螞蟻部落"];
arr.removeByValue("螞蟻部落",false);
console.log(arr);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/22/202001rcoek9eretcuc303.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述程式碼可以刪除陣列第一個"螞蟻部落"。

引數解析如下:

(1).方法第一個引數規定要刪除元素的值。

(2).方法第二個引數是布林值,規定是否要刪除所有指定元素,false為只刪除第一個。

實現過程大致如下:

(1).通過prototype原型為Array建構函式(類)新增自定義方法removeByValue。

(2).利用for迴圈遍歷陣列中的元素,並判斷當前索引的元素值是否等於val。

(3).如果等於,那麼利用splice方法刪除此元素,並且判斷flag是否是true。

(4).很重一點就是將i重置為-1,原因具體參閱for迴圈無法刪除陣列所有指定元素一章節。

(4).如果是true,那麼繼續進行迴圈遍歷,直到刪除所有指定值的元素,否則直接跳出。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
Array.prototype.removeByValue = function(val,flag){
  for(let i=0; i<this.length; i++) {
    if(this[i] == val) {
      this.splice(i, 1);
      if(!flag) break;
    }
  }
}
let arr=["螞蟻部落", 4, "antzone", "螞蟻部落"];
arr.removeByValue("螞蟻部落",true);
console.log(arr);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/22/202036hcz4ecxkjc9x47bk.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述程式碼刪除所有制為"螞蟻部落"的陣列元素。

二.刪除第N個指定元素:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
Array.prototype.removeByValue = function(val,num){
  let count = 0;
  for(let i = 0; i <this.length; i++) {
    if(this[i] == val) {
      count=count+1;
      if(num===count){
        this.splice(i, 1);
        break;
      }
    }
  }
}
let arr=["螞蟻部落", 4, "antzone", "螞蟻部落"];
arr.removeByValue("螞蟻部落",2);
console.log(arr);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/22/202106gdrwaww4nldotj3i.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述程式碼可以刪除陣列中的第二個"螞蟻部落"。

引數解析如下:

(1).方法第一個引數規定要刪除元素的值。

(2).方法第二個引數規定要刪除第幾個指定元素。

由於上面程式碼非常簡單,不再詳細分析。

三.刪除第N個指定元素:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
Array.prototype.removeByIndex = function(index){
  this.splice(index,1)
}
let arr=["螞蟻部落", 4, "antzone", "青島市南區"];
arr.removeByIndex(2);
console.log(arr);

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/22/202136bix7ncx7x5xe7ff4.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上述程式碼可以刪除索引為2的陣列元素,非常簡單不做介紹。

相關閱讀:

(1).prototype可以參閱JavaScript prototype一章節。

(2).splice可以參閱JavaScript 陣列 splice一章節。

相關文章