使用按值删除元素的自定义方法扩展数组

Extending Array with custom method that removes an element by value

本文关键字:自定义方法 扩展 数组 元素 删除      更新时间:2023-09-26

我必须创建一个新的数组方法,当调用它时,它会从数组中删除特定的"值"。它适用于数字,但是当我使用字符串时,它会返回一个空数组......

Array.prototype.removeItem = function(value){
	for(var key in this){
	this.splice(this.indexOf(value), 1);
	}
}
var arr = [1, 2, 1, 4, 1, 3, 4, 1, 111, 3, 2, 1, '1'];
console.log(arr);
arr.removeItem(1);
console.log(arr);
var arrSecond = ['hi', 'bye', 'hello' ];
console.log(arrSecond);
arrSecond.removeItem('hi');
console.log(arrSecond);

如果未找到indexOf 将返回 -1。传递到拼接的负开始从结束开始计算。参见 ECMA-262 §15.4.4.14

因此,一旦从数组中删除值,之后将删除最后一个成员。

更好的方法可能是:

var index;
while ((index = this.indexOf(value)) > -1) {
  this.splice(index, 1);
}

为。。in 不应在此处使用,请考虑 For Each for Array 循环。