2

I have a javascript array like

["1.A","1.B","1.C","1.D",...,"2.A","2.B",...]

Now I want to remove elements from this array by a specified string. For exm if I specify "1" then it should remove all of "1.A","1.B","1.C","1.D"....How to do this in jQuery.

4

5 回答 5

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;
});
于 2012-08-09T16:13:22.340 回答
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);
    }

}
于 2012-08-09T16:12:50.177 回答
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"]

但是,我实际上并不建议编写这样的破坏性函数,因为复制原始数组的函数更安全、更灵活。

于 2012-08-09T16:39:51.677 回答
0

您可以使用 jQuery map() 方法来执行此操作:

var filter = '1';
origArr = $.map(origArr, function (value, index) {
    if($.inArray(filter, value) != 0) {
        return value;
    }
});
于 2012-08-09T16:16:52.870 回答
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));
于 2012-08-09T16:22:00.807 回答