[解決済み] javascript - 条件で配列要素を削除する
2023-01-16 08:36:14
質問
javascriptで、ある条件をクリアした配列の要素をすべて削除するメソッドを実装したいのですが、どのようにすればよいでしょうか?(できればjQueryを使用せずに)。
例
ar = [ 1, 2, 3, 4 ];
ar.removeIf( function(item, idx) {
return item > 3;
});
上記は、配列の各項目を調べて、その中から
return true
に該当するもの(例では、項目 >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"
-- 更新2 --
インデックス条件も機能するといいんですけどね。
例
ar = [ {num:1, str:"a"}, {num:2, str:"b"}, {num:3, str:"c"} ];
ar.removeIf( function(item, idx) {
return idx == 2;
});
どのように解決するのですか?
独自のメソッドを
Array
に独自のメソッドを追加して、似たようなことをすることができます。
filter
がうまくいかない場合は
Array.prototype.removeIf = function(callback) {
var i = 0;
while (i < this.length) {
if (callback(this[i], i)) {
this.splice(i, 1);
}
else {
++i;
}
}
};
私にとって、これはJavaScriptの最もクールな機能の1つです。 Ianは同じことをするために、より効率的な方法を指摘してくれました。それがJavaScriptであることを考慮すると、あらゆることが助けになります。
Array.prototype.removeIf = function(callback) {
var i = this.length;
while (i--) {
if (callback(this[i], i)) {
this.splice(i, 1);
}
}
};
これにより、更新を気にする必要さえもなくなりました。
length
を更新したり、次の項目をキャッチしたりすることを気にする必要すらありません。
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] reactのrender関数でdynamic hrefを作成するには?
-
[解決済み] Javascript 空の配列の削減
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] reactのrender関数でdynamic hrefを作成するには?
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
-
[解決済み] Node.jsのES6クラスをrequireで作る