使用按值删除元素的自定义方法扩展数组
Extending Array with custom method that removes an element by value
我必须创建一个新的数组方法,当调用它时,它会从数组中删除特定的"值"。它适用于数字,但是当我使用字符串时,它会返回一个空数组......
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 循环。
相关文章:
- 用于检查数组中是否存在元素的javascript自定义方法
- Es6:能够在设置/更新/删除对象属性时调用自定义方法
- 如何用Typescript用自定义方法实现类数组
- $resource上带有.then()函数的角度自定义方法导致错误
- 如何将原型用于自定义方法和对象操作
- 续集返回未定义的模型自定义方法
- jQuery 在自定义方法中使用 if 语句进行验证
- 为什么Kendo DataSource使用自定义方法进行端点通信总是发送相同的对象进行删除
- jQuery验证插件-比较两个选择下拉列表的自定义方法
- 如何在Javascript中向存储类添加自定义方法
- 如何使用子上下文可访问的自定义属性扩展模板绑定语法
- jQuery验证自定义方法规则和具有动态名称的消息
- 要重定向的 SignalR 自定义方法
- 如何在Visual Studio 2010/2012中将自定义文件扩展名注册到JavaScript编辑器
- 使用按值删除元素的自定义方法扩展数组
- 如何使用自定义方法和字段扩展沙盒 sinon
- 有没有一种更优雅、可扩展的方式可以向JQuery验证自定义方法添加多个条件
- 在angular 2中使用自定义方法扩展Typescript Type
- 如何在javascript中使用自定义方法来扩展对象
- 用自定义方法扩展DOM元素