如何在不使用任何内置数组方法的情况下删除JavaScript中的数组元素



我想编写自己的数组元素删除方法的实现。为什么? - 因为我有兴趣了解数组元素删除背后的算法,并想对此进行刺伤。

我尝试了删除运算符,但它只是设置了未定义的元素。我不想使用任何现有的内置数组方法,例如剪接,shift,pop等。

甚至有可能实现这一目标吗?我不是在寻找整个脚本,而是一个想法和有关如何进行的指导将有所帮助。可能会建议我探索的主题以获取答案。

谢谢。

p.s-1:我已经看到了与数组元素删除有关的其他帖子,但它们都使用剪接,pop,shift方法。

p.s-2:如果您要删除这个问题,至少有一些礼貌地解释了您为什么要投票。否则,我只能假设您的生活极为痛苦,您需要在此论坛上发布随机问题以治愈您的痛苦。

您可以创建自己的删除方法:

Array.prototype.flush = function() {console.log(this.length = 0);}

用法:

var test = [1, 2, 3];
alert(test);
test.flush();
alert(test);

更新1 删除方法:如果我理解正确:指定位置,删除一个元素。如果没有更好的使用是array.protype.splice(),无论如何,如果您询问:

代码:

Array.prototype.delete = function(pos){ 
 if (pos < this.lenght) {
  this.splice(pos, 1);  
  return this
 } 
 throw "index " + pos + " outside of array length";
}

用法:

var test = [1, 2, 3];
    alert(test);
    test.delete (1);
    alert(test);

更新2 JavaScript数组删除无原型方法用法:

Array.prototype.delete = function (pos) {
  if (!this.length) throw 'array is empty';
  if (pos < this.length) {
    for (var i = pos; i < this.length - 1; i++) {
      if (i < pos) continue;
      this[i] = this[i + 1];
    }
    this.length = this.length - 1;
    return this;
  }
  throw 'index ' + pos + ' outside of array length';
}
var foo = [1, 2, 3];
foo.delete(0);
alert(foo);
foo.delete(0);
alert(foo);
foo.delete(0);
alert(foo);
foo.delete(0);
alert(foo);
 tab=[1,2,3,4,5]
    function new_splice(index,arr){
        for(i=0;i<arr.length-1;i++)
            if(i==index-1){
                for(j=i;j<arr.length-1;j++)
                    arr[j]=arr[j+1]
            }
            new_arr=[];
            for(i=0;i<arr.length-1;i++)
                new_arr[i]=arr[i]
        return new_arr;
    }
    document.write(new_splice(1,tab))

相关内容

最新更新