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);

猜你喜欢

转载自blog.csdn.net/SilenceJude/article/details/84345983