1. 程式人生 > >js中刪除陣列元素的方法總結。

js中刪除陣列元素的方法總結。

子曰:“學而時習之,不亦說乎?”
雖然我覺得這裡的習字應該理解為實踐練習,而不是複習,但是這裡權當我理解錯了吧o(╯□╰)o。
今天就整理一下js中刪除陣列元素的方法,包括原生API和自定義API。

原生API:

  1. 刪除陣列最後一個元素,arr.pop(),並返回該元素,對原陣列有影響。
  2. 刪除陣列第一個元素,shift(),並返回該元素,對原陣列有影響。
  3. 刪除從陣列start下標開始,往後count個元素。 splice(start, count),返回刪除元素/陣列,對原陣列有影響。
    {splice的完整用法應該是 splice(start,delCount, item1,item2…),即刪除指定元素後,新增一些新元素,如果不寫新元素,則為刪除效果}

自定義API:
4.通過給Array物件的原型物件prototype新增一個新方法來實現。原理是找到傳入下標/元素位置後,讓後面的陣列元素覆蓋前面的陣列元素,最後陣列長度減1.

/**
 *刪除陣列指定下標或指定元素。
 */
Array.prototype.remove = function (obj) {
  for (var i = 0; i < this.length; i++) {//遍歷陣列。
    var temp = this[i];
    if (!isNaN(obj)) {//判斷傳入引數是下標數字還是元素。是下標數字,就將temp賦值為i;有個bug,如果傳遞的元素是‘1234’這樣字串形式的數字,就無法刪除。
      temp = i;
    }
    if (temp == obj) {//當遍歷到傳入的下標/元素位置時,進入下面迴圈。
      for (var j = i; j < this.length; j++) {//將下標為i之後的元素,往前移動。這樣就覆蓋了該下標。最後記得陣列長度減1.
        this[j] = this[j + 1];
      }
      this.length = this.length - 1;
    }
  }
}


var arr = ['jude', 'wangwang', '1234', '通知製品', {
  uname: 'tom',
  score: 500
}]
var str = '1234';
console.log(arr);
arr.remove(2);
arr.remove('jude')
console.log(arr);