[解決済み】JavaScriptでboolean条件に一致する配列の最初の要素を見つけるには?
2022-03-28 07:42:45
質問
与えられた条件にマッチするJS配列の最初の要素を見つける既知のビルトイン/エレガントな方法があるのかどうか疑問に思っています。C#では次のようになります。 リスト.検索 .
今まではこのように2つの機能のコンボを使っていました。
// Returns the first element of an array that satisfies given predicate
Array.prototype.findFirst = function (predicateCallback) {
if (typeof predicateCallback !== 'function') {
return undefined;
}
for (var i = 0; i < arr.length; i++) {
if (i in this && predicateCallback(this[i])) return this[i];
}
return undefined;
};
// Check if element is not undefined && not null
isNotNullNorUndefined = function (o) {
return (typeof (o) !== 'undefined' && o !== null);
};
そして、使えるようになる。
var result = someArray.findFirst(isNotNullNorUndefined);
しかし ECMAScript には、多くの関数型配列メソッドがあります。 もしかしたら、すでにこのようなものがあるのでは?多くの人がこのようなものを常に実装しなければならないのでしょうね...。
解決方法は?
ES6以降では、ネイティブの
find
メソッド
これは、最初のマッチを見つけると配列の列挙を停止してその値を返します。
const result = someArray.find(isNotNullNorUndefined);
古い回答です。
これらを阻止するために、回答を投稿する必要があります
filter
を提案します :-)
ECMAScript には関数型の配列メソッドがたくさんあるので、もしかしたらこのようなものがすでにあるのかもしれませんね?
を使用することができます。
some
Arrayメソッド
を使用して、ある条件に達するまで (そして停止するまで) 配列を繰り返し処理します。残念ながら、このメソッドは条件を満たしたかどうかを返すだけで、 どの要素で (あるいはどのインデックスで) 条件を満たしたかを返すわけではありません。そこで、少し修正する必要があります。
function find(arr, test, ctx) {
var result = null;
arr.some(function(el, i) {
return test.call(ctx, el, i, arr) ? ((result = el), true) : false;
});
return result;
}
var result = find(someArray, isNotNullNorUndefined);
関連
-
[解決済み】フォームコントロールの値アクセサがない
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】module.exports "モジュールが定義されていません"
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Facebook Graph API のクエリで with=location を使用すると "Uncaught (in promise) undefined" というエラーが発生する。
-
[解決済み】フォームコントロールの値アクセサがない
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】XMLHttpRequestモジュールが定義されていない/見つからない
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み] テスト
-
[解決済み】JavaScriptのボタンonclickが機能しない
-
[解決済み】Kendo Observable Bindingと併用する場合、Kendo Switch Labelsを変更することは可能ですか?[Kendo-UI]です。
-
[解決済み】TypeError:res.jsonは関数ではありません。