2

私は次のようなJavaScript配列を持っています

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

ここで、指定された文字列によってこの配列から要素を削除したいと思います。exmの場合、「1」を指定すると、「1.A」、「1.B」、「1.C」、「1.D」のすべてが削除されます。...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

これを行うには、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 に答える
0

元の配列を破壊的に変更する関数が必要なようです。これが1つです:

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 に答える