読者です 読者をやめる 読者になる 読者になる

配列の各要素が全て条件を満たすかどうかを調べる

kickstrapのjsをなんとなく読んでたらこんなの見つけました。

// IE compatibility fallbacks, turned on when needed.
// Thanks to http://stackoverflow.com/questions/2790001/fixing-javascript-array-functions-in-internet-explorer-indexof-foreach-etc
if (!('every' in Array.prototype)) {
  Array.prototype.every= function(tester, that /*opt*/) {
    for (var i= 0, n= this.length; i<n; i++)
      if (i in this && !tester.call(that, this[i], i, this))
        return false;
    return true;
  };
}

よく知らなかったんですが、jsに配列の各要素全てがある条件を満たすかどうか調べるメソッドがあるんですね。
そしてieだとバージョンによっては使えないのでその場合に備えて自前で実装していると。


単純な使い方としてはこうですね。

javascript

[2,4,6].every(function(elem, index, array){ return elem % 2 == 0 })


ついでにpythonrubyでも書いてみました。


python

all([e % 2 == 0 for e in [2, 4, 6]])

ruby

[2,4,6].all? { |e| e % 2 == 0}


参考 : Fixing javascript Array functions in Internet Explorer (indexOf, forEach, etc) - Stack Overflow
参考 : ajkochanowicz/Kickstrap · GitHub
参考 : Array every method - JavaScript | MDN