103

特定の条件をクリアする配列のすべての要素を削除するメソッドをjavascriptで実装する方法を考えていました。(できればjQueryを使用しないでください)

元。

ar = [ 1, 2, 3, 4 ];
ar.removeIf( function(item, idx) {
    return item > 3;
});

return true上記は、配列内の各項目を調べて、条件 (例では item > 3) のすべての項目を削除します。

私はjavascriptを使い始めたばかりで、これを行うための短い効率的な方法を誰かが知っているかどうか疑問に思っていました.

--アップデート--

条件がオブジェクトのプロパティでも機能することも素晴らしいことです。

元。

ar = [ {num:1, str:"a"}, {num:2, str:"b"}, {num:3, str:"c"} ];
ar.removeIf( function(item, idx) {
    return item.str == "c";
});

アイテムが削除される場所item.str == "c"

-- update2 --

インデックス条件も同様に機能するとよいでしょう。

元。

ar = [ {num:1, str:"a"}, {num:2, str:"b"}, {num:3, str:"c"} ];
ar.removeIf( function(item, idx) {
    return idx == 2;
});
4

9 に答える 9

146

Array フィルタ メソッドを使用できます。

コードは次のようになります。

ar = [1, 2, 3, 4];
ar = ar.filter(item => !(item > 3));
console.log(ar) // [1, 2, 3]

于 2013-04-14T05:02:23.547 に答える
42

を使用できますArray.filter()。これは反対のことを行います。

ar.filter(function(item, idx) {
    return item <= 3;
});
于 2013-04-14T05:01:01.067 に答える
7

lodash.removeを使用できます

var array = [1, 2, 3, 4];
var evens = _.remove(array, function(n) {
  return n % 2 == 0;
});

console.log(array);
// => [1, 3]

console.log(evens);
// => [2, 4]
于 2019-01-23T06:43:58.810 に答える