我想删除基于对象属性的字符串匹配的元素,但是当我在javascript数组上执行切片时,数组大小减小并且索引更改。请帮助解决方案。同样的,这里是jsfiddle link。如何匹配并从javascript数组中删除一个对象?
代码
var selection = JSON.parse('[{"Connectors":"c1"},{"Connectors":"c2"},{"Schedules":"s1"},{"Schedules":"s2"},{"Gauges":"g1"},{"Gauges":"g2"},{"Gauges":"g3"}]');
removeitem("Gauges");
function removeitem(item) {
for (var i = 0; i < selection.length; i++) {
if (selection[i].hasOwnProperty(item)) {
selection.splice(i, 1);
}
}
}
如果你不想索引改变,你应该调用'delete selection [i]'而不是'selection.splice(i,1);'。 – Loolooii 2014-11-22 12:57:06
@Loolooii:它会使它成为'未定义'。这不会导致问题吗? – abi1964 2014-11-22 13:00:47
@ abi1964取决于他想做什么。他显然不希望大小和指数改变,所以我不这么认为。 – Loolooii 2014-11-22 13:07:20