javascript删除数组元素的两种方案
2013-06-10 05:56
148 查看
javascript的数组没有原生的删除任意元素的方法,最开始查到的方案是扩展prototype,像这样:
Array.prototype.remove = function(e) { var index = this.indexOf(e); if (index > 0) return this.slice(0, index).concat(this.slice(index+1, this.length)); }; //现在可以这样调用了 var a = [1, 2, 3]; a.remove(2); //a == [1, 3]但是后来发现一个蛋疼的问题,通过扩展prototype添加的方法,在使用for...in遍历数组的时候会被访问的,这样就会和数组元素相混淆。比如在处理一个空的数组时,for...in循环体中的语句不应该执行,但是因为扩展了prototype,循环体语句就会执行。
//假设做了上一段代码那样的修改 var a = []; for (var i in a) { //这里本来不应该执行,但现在会打印出"remove" console.log(i); }一个解决办法是使用hasOwnProperty()函数,for循环中要写成这样
for (var i in a) { if (a.hasOwnProperty(i)) { //TO-DO } }这是在是太难看了,遍历数组是使用频率非常高的操作,全都改成这样要多别扭有多别扭。最后采用的解决方案是这样,使用了splice()函数,而不是上面用到的slice()函数。
var a = [1, 2, 3]; var index = a.indexOf(2); a.splice(index, 1);
相关文章推荐
- javascript 直接删除数组元素
- JavaScript中删除节点的两种操作方法
- typesctipt javascript 删除数组元素的方法
- JavaScript delete操作符&&javascript中数组元素删除问题的讨论
- javascript 删除数组元素和清空数组的简单方法
- 关于javascript中数组元素删除问题的讨论
- javascript中使用splice方法轻松实现对数组元素的插入、删除、替换
- 用索引删除数组元素,防止删除元素对索引造成干扰的两种解决方法
- JavaScript Array Remove 最好的删除数组元素的方法
- JavaScript中关于for循环删除数组元素内容时出现的问题
- 两种方法直接删除数组中特定值的项(JavaScript)
- 关于javascript中数组元素删除问题的讨论
- javascript 删除数组元素
- javascript中数组元素删除问题的讨论
- javascript数组元素的添加、删除与插入以及参数数组的使用
- javascript 中没有直接删除数组元素的函数 通过自己构造
- JavaScript添加数组元素和删除数组元素
- 浅谈JavaScript显示弹出窗口的两种方案
- javascript 删除数组元素并且数组长度减小