0

この形式の配列があるとしましょう

[
   [val1,val2,val3],
   [val4,val2,val1]
   ....
]

更新 - 申し訳ありませんが、要件が明確ではありませんでした。私はこれを意味します

出力は、このようなオブジェクトの配列である必要があります

[ {[val1,val2,val3] : 1}, {[val4,val2,val1] : 1}],

この上の json は驚くほど愚かであることに気付きました。このようなオブジェクトを作成する方が理にかなっていると思います

{ selectedRowIndices: [rows that have the value], freq: the frequency}

アンダースコアとその groupBy 関数を使用することを考えましたが、実際、単純な配列でこれを行うことに成功しました。

groups = _(values)
  .chain()
  .groupBy(_.identity)
  .map((values, key) ->
    freq: values.length
    value: key
  ).sortBy((d) ->
    d.value
  ).value()

ただし、上記の配列でそれを行う方法がわかりません。

4

2 に答える 2

0

探していると思います

groups = _.chain(values)
  .groupBy((a) ->
    a[2]
  ).map((values, key) ->
    value: key // the third column
    selectedRows: values // the rows that have this value
    freq: values.length // and their number
  ).sortBy((d) ->
    d.value
  ).value()

インデックスが必要な場合は、groupBy呼び出しを次のように置き換えます

  .reduce((m, a, i) ->
    k = a[2]
    (m[k] || m[k]=[]).push i // instead of pushing `a`
    m
   , {})
于 2013-08-06T20:37:34.627 に答える