【发布时间】:2014-12-23 21:44:50
【问题描述】:
我必须创建一个新的数组方法,当它被调用时,它会从数组中删除一个特定的“值”。它适用于数字,但是当我使用字符串时,它会返回一个空数组...
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);
【问题讨论】:
-
我真的不认为它适用于数字...
[2, 4, 3, 4, 111](我得到的结果)缺少3和'1'。 -
由于
indexOf()方法,您的迭代不断减少数组。 -
这样的循环拼接是个坏消息
-
既然您使用的是 indexOf,为什么还要进行迭代?并且当有 forEach、map、reduce、 时,不推荐对数组使用 for..in过滤器等
标签: javascript arrays string methods prototype