.first()
元のソースコードに大きな影響を与えることなく、述語パラメーターを受け入れることができるようにjQueryメソッドを拡張することは可能ですか?基本的に私がやりたいのは、LINQの.First()
C#メソッドに似たものです。JavaScriptでは、次のようになります。
function first(arr, predicate) {
for (var i = 0; i < arr.length; i++) {
// return the first item fulfilling the predicate
if (predicate.call(arr[i])) {
return arr[i];
}
}
}
var myArray = [1, 3, 5],
myPredicate = function() {
return this >= 2;
};
var result = first(myArray, myPredicate); // should give '3'
JavaScriptで簡単に実現できることは知っています。jQuery内の既存のメソッドを簡単に拡張できるかどうかだけが気になります。
使用したソリューション:
$.fn.firstOne = function(predicate) {
// validate the predicate is a function
if ($.isFunction(predicate)) {
// iterate through each item, finding the first match
for (var i = 0; i < this.length; i++) {
if (predicate.call(this.eq(i), i)) {
return this.eq(i);
}
}
}
// maintain chainability
return $();
};