5

http://underscorejs.org/#groupByに相当する jQuery の組み込み関数はありますか?

回避策はありますか?

ありがとう

4

3 に答える 3

7

いいえ、jQuery はデータ処理用に作成されたのではなく、DOM、Ajax、およびアニメーション用に作成さました。eachmapgrep

アンダースコアを使用してください。問題はありません。スクリプト全体をロードしたくない場合は、groupby関数をソースから必要な場所に簡単にコピーできます。その起源についてコメントを追加することを忘れないでください。

于 2013-01-07T20:51:24.437 に答える
2

これは、squint のネイティブ Javascript の回答をjQueryに適応させたものです。

$.fn.groupBy = function(predicate) {
  var $array = $(this),
      grouped = {};

  $.each($array, function (idx, obj) {
    var $obj = $(obj);
        groupKey = predicate($obj);
    if (typeof(grouped[groupKey]) === "undefined") {
      grouped[groupKey] = $();
    }
    grouped[groupKey] = grouped[groupKey].add($obj);
  });

  return grouped;
}

^これは { key_name: jQueryObjects } のハッシュを返します


この場合、HTML属性によって要素 ( ) をグループ$yourElementsname化するための使用法:

var groupedByName = $yourElements.groupBy(function (obj) {
  return $(obj).attr('name');
});
于 2015-07-31T17:37:32.243 に答える
0

私はこれを使用しましたが、私にとっては完璧に機能しました

function groupBy(array, keyOrIterator) {
  var iterator, key;

  // use the function passed in, or create one
  if(typeof key !== 'function') {
    key = String(keyOrIterator);
    iterator = function (item) { return item[key]; };
  } else {
    iterator = keyOrIterator;
  }

  return array.reduce(function (memo, item) {
    var key = iterator(item);
    memo[key] = memo[key] || [];
    memo[key].push(item);
    return memo;
  }, {});
}

リンクから

于 2020-01-22T09:18:23.270 に答える