15

ドキュメントで読んだことから、 _.find() 関数は _.some() と非常によく似ています

2つの間に(パフォーマンス)利点があるかどうかは誰にもわかりませんか?

4

2 に答える 2

28

find使用するかどうか、またはsome特定のケースで知りたいと仮定すると、それらのパフォーマンス特性はおそらく同じです。彼らは両方とも同じように怠け者です。

違いは出力にあります。find値を返し、someを返しますboolean


ソースを確認しました(1.4.4)。どちらも内部で(=== )someを使用します。したがって、 のネイティブ実装が使用されている場合でも、 と の両方にメリットがあります。findsomeanysomefindsome

于 2013-03-27T17:53:04.730 に答える
3

ソースを調べると、これら 2 つが同一であることがわかります。_.find は実際には _.some を呼び出します。

_.find = _.detect = function(obj, iterator, context) {
  var result;
  any(obj, function(value, index, list) {
    if (iterator.call(context, value, index, list)) {
      result = value;
      return true;
    }
  });
  return result;
};

var any = _.some = _.any = function(obj, iterator, context) {
  iterator || (iterator = _.identity);
  var result = false;
  if (obj == null) return result;
  if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
  each(obj, function(value, index, list) {
    if (result || (result = iterator.call(context, value, index, list))) return breaker;
  });
  return !!result;
};
于 2013-03-27T18:09:15.003 に答える