私は次のようなJavaScript配列を持っています
["1.A","1.B","1.C","1.D",...,"2.A","2.B",...]
ここで、指定された文字列によってこの配列から要素を削除したいと思います。exmの場合、「1」を指定すると、「1.A」、「1.B」、「1.C」、「1.D」のすべてが削除されます。...jQueryでこれを行う方法。
私は次のようなJavaScript配列を持っています
["1.A","1.B","1.C","1.D",...,"2.A","2.B",...]
ここで、指定された文字列によってこの配列から要素を削除したいと思います。exmの場合、「1」を指定すると、「1.A」、「1.B」、「1.C」、「1.D」のすべてが削除されます。...jQueryでこれを行う方法。
これを行うのに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);
}
}
これを行うには、jQuery map()メソッドを使用できます。
var filter = '1';
origArr = $.map(origArr, function (value, index) {
if($.inArray(filter, value) != 0) {
return value;
}
});
これを行うのに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));
元の配列を破壊的に変更する関数が必要なようです。これが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"]
ただし、元の配列をコピーする関数の方が安全で柔軟性が高いため、このような破壊的な関数をコーディングすることは実際にはお勧めしません。