我想编写自己的数组元素删除方法的实现。为什么? - 因为我有兴趣了解数组元素删除背后的算法,并想对此进行刺伤。
我尝试了删除运算符,但它只是设置了未定义的元素。我不想使用任何现有的内置数组方法,例如剪接,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))