Removing an element from an array specifying a value in Javascript
我读过这个问题:
在javascript中删除数组元素-删除与拼接
似乎拼接和删除都需要元素的索引才能删除,所以当我有值时,如何轻松找到索引?
例如,如果我有一个这样的数组:
1 | ["test1","test2","test3"] |
我想删除test2。我现在使用的进程,我希望不是正确的方法,它使用
当数组变大时,我会认为这是一个缓慢的过程,但是我有什么选择呢?
要使用splice()函数删除该项,indexof将在数组中找到它:
在数组中查找特定元素:(知道要删除哪个元素)
1 | var index = array.indexOf('test2'); |
完整例子:
1 2 3 | var array = ['test1', 'test2', 'test3']; var value_to_remove = 'test2'; array.splice(array.indexOf(value_to_remove), 1); |
工作演示
1 2 | var array = ["test1","test2","test3"]; array.splice(array.indexOf("test2"), 1); |
返回在数组中可以找到给定元素的第一个索引,如果不存在,则返回-1。
您可以jquery的
1 | var index = $.inArray("test2", ["test1","test2","test3"]); // 1 |
(我知道你的问题没有被标记为"jquery",但是你提到你已经在使用一个
使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { "use strict"; if (this === void 0 || this === null) { throw new TypeError(); } var t = Object(this); var len = t.length >>> 0; if (len === 0) { return -1; } var n = 0; if (arguments.length > 0) { n = Number(arguments[1]); if (n !== n) { // shortcut for verifying if it's NaN n = 0; } else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0)) { n = (n > 0 || -1) * Math.floor(Math.abs(n)); } } if (n >= len) { return -1; } var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); for (; k < len; k++) { if (k in t && t[k] === searchElement) { return k; } } return -1; } } |
请注意,如果向
js是一个非常棒的小库,有很多好的实用功能。在这种情况下,拒绝是合适的。
http://documentcloud.github.com/underline/拒绝
(尽管内部方法当然类似于手动索引查找和切片/拼接)。