LoginSignup
1
2

More than 5 years have passed since last update.

配列にfirst, lastメソッドを生やす

Posted at

JavaScript1.8から配列オブジェクトにmap, filter, reduce, some, everyと集合演算メソッドががさっと搭載されて随分と使いやすくなりました。
でもあれが足りませんね。first, lastメソッド。条件に合う最初の、もしくは最後の要素を返してくれるメソッド。reduceでも書けないことないんですけど適合したらbreakという処理にならないので無駄な判定が走りますし避けたいです。

そんなときにforループを書かなくてもいいように、生やしましょうfirst, lastメソッド。TypeScriptで。

/** Extends array object */
interface Array<T> {
    /** Returns the first element that satisfies the predicate */
    first(predicate:(element:T) => boolean, defaultVaule: T): T;
    /** Returns the last element that satisfies the predicate */
    last(predicate:(element:T) => boolean, defaultVaule: T): T;
}

Array.prototype.first = function (predicate: (element) => boolean, defaultVaule) {
    for (var i: number = 0; i < this.length; i++) {
        if (predicate(this[i])) return this[i];
    }
    return defaultVaule;
};
Array.prototype.last= function (predicate: (element) => boolean, defaultVaule) {
    for (var i: number = this.length; i-- > 0;) {
        if (predicate(this[i])) return this[i];
    }
    return defaultVaule;
};
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2