我有一个类似
的javascript数组["1.A","1.B","1.C","1.D",...,"2.A","2.B",...]
现在我想通过指定的字符串从这个数组中删除元素。对于exm,如果我指定“1”那么它应该删除所有“1.A”,“1.B”,“1.C”,“1.D”....如何在jQuery中执行此操作。
答案 0 :(得分:10)
您可以使用原生.filter()
功能:
var array = ["1.A","1.B","1.C","1.D",...,"2.A","2.B",...];
array = array.filter(function(value) {
return value.indexOf('1') < 0;
});
或使用jQuery使用.grep()
方法:
var array = $.grep(array, function(value) {
return value.indexOf('1') < 0;
});
答案 1 :(得分:4)
你不需要jQuery来做这件事 - 常规的JavaScript会做得很好。代码循环遍历aArray,使用.substring
查看数组元素的第一个字符,检查它是否等于您指定的前缀(在本例中为1
),如果匹配,则使用。 splice从数组中删除该元素:
var aArray = ["1.A","1.B","1.C","1.D","2.B","2.C"];
var i = aArray.length;
while(i--) {
if ((aArray[i].substring(0,1) == "1") {
var oRemoved = aArray.splice(i,1);
}
}
答案 2 :(得分:0)
您可以使用jQuery map()方法执行此操作:
var filter = '1';
origArr = $.map(origArr, function (value, index) {
if($.inArray(filter, value) != 0) {
return value;
}
});
答案 3 :(得分:0)
你不需要jQuery来做这件事。
var data = ["1.A", "1.B", "1.C", "1.D", "2.A", "2.B"];
function removeElements(str) {
return data.filter(function(a) {
return (a.indexOf(str + ".") < 0);
});
}
alert(removeElements(1));
alert(removeElements(2));
答案 4 :(得分:0)
您似乎想要一个破坏性地修改原始数组的函数。这是一个:
Array.prototype.removeElementsWithPrefix = function(prefix) {
for (var i = this.length - 1; i >= 0; i--) {
if (this[i].indexOf(prefix) == 0) {
this.splice(i, 1);
}
}
return this;
}
var a = ["foo", "bar", "baz"];
a.removeElementsWithPrefix("b");
a; // => ["foo"]
我实际上并不建议编写像这样的破坏性函数,因为复制原始数组的函数更安全,更灵活。