2016-11-14 10 views
2

のアレイの数:LodashまたはJS GROUPBYと私が入力してい配列

results = [ 
    [ "Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS1", "small", "SW192EZ", "undefined" ], 
    [ "Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS2", "large", "SW192EZ", "undefined" ], 
    [ "Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS2", "large", "SW192EZ", "undefined" ], 
    [ "Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS2", "medium", "SW192EZ", "undefined" ], 
] 

を私は出力が

small 
    DryKISS1 : 1 
medium 
    DryKISS2 : 1 
large 
    DryKISS1 : 5 
    DryKISS2 : 2 
    DryKISS3 : 1 

は、基本的にはサイズによってグループ化して、会社名を合計するような何かになりたいです同じサイズの括弧で囲みます。

私は以下で遊んでてきたが、ほとんどの例として迷子に任意のヘルプは、プレーンJavaScriptで

+0

私はそれを見ているようあなたは、あなたの期待される出力になるために、あなたが供給されたデータを期待する方法の詳細を説明しませんでした。まず、あなたの提供するデータにはDryKISS3はありません。また、実際のメールアドレスは、スクラップがこれをつかむことができ、あなたのスパムメールを受け取ることができることを知っていることです。:) – Keith

答えて

1

を高く評価し、ハッシュ/オブジェクト

console.log _.chain(results).groupBy(4).map((value, key) -> 
    [ 
    key 
    _.reduce(value, ((result, currentObject) -> 
     { 
     company: result[ 3 ] 
     } 
    )) 
    ] 
).value() 

ためのもので、ネストされたとのオブジェクトを使用することができますカウントのプロパティ。最大で

var results = [["Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS1", "small", "SW192EZ", "undefined"], ["Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS2", "large", "SW192EZ", "undefined"], ["Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS2", "large", "SW192EZ", "undefined"], ["Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS2", "medium", "SW192EZ", "undefined"]], 
 
    grouped = {}; 
 

 
results.forEach(function (a) { 
 
    grouped[a[4]] = grouped[a[4]] || {}; 
 
    grouped[a[4]][a[3]] = (grouped[a[4]][a[3]] || 0) + 1; 
 
}); 
 

 
console.log(grouped);

その後、3列でアイテムをカウントする変換使用し、4列目で

var results = [["Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS1", "small", "SW192EZ", "undefined"], ["Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS2", "large", "SW192EZ", "undefined"], ["Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS2", "large", "SW192EZ", "undefined"], ["Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS2", "medium", "SW192EZ", "undefined"]], 
 
    grouped = {}, 
 
    max = { count: 0, keys: [] }; 
 

 
results.forEach(function (a) { 
 
    grouped[a[4]] = grouped[a[4]] || {}; 
 
    grouped[a[4]][a[3]] = (grouped[a[4]][a[3]] || 0) + 1; 
 
    if (grouped[a[4]][a[3]] > max.count) { 
 
     max = { count: grouped[a[4]][a[3]], keys: [{ size: a[4], group: a[3] }] }; 
 
     return; 
 
    } 
 
    if (grouped[a[4]][a[3]] === max.count) { 
 
     max.keys.push = { size: a[4], group: a[3] }; 
 
    } 
 
}); 
 

 
console.log(max); 
 
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

'私は出力が何かのようになりたいです.'同じようには見えません。 :)それは彼が後にしている可能性が最も高いですが、OPがデータソースを作成し、期待される結果が再現可能であればいいと思います。 – Keith

+0

素晴らしい感謝 - 私はloDashの方法を見つけることを試みていたが、これは私が感じるべきである単純なバニラの方法です。 –

+0

ああ、私はこれらのソートをどのように並べ替えるのですか? –

3

グループを数える:

var data = [ 
 
    ["Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS1", "small", "SW192EZ", "undefined"], 
 
    ["Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS2", "large", "SW192EZ", "undefined"], 
 
    ["Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS2", "large", "SW192EZ", "undefined"], 
 
    ["Mon Nov 14 08:08:14 GMT+07:00 2016", "Ian Warner", "[email protected]", "DryKISS2", "medium", "SW192EZ", "undefined"], 
 
]; 
 
    
 
var result = _(data) 
 
    .groupBy(4) 
 
    .transform(function(result, items, key) { 
 
    result[key] = _.countBy(items, 3); 
 
    }) 
 
    .value(); 
 
    
 
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.0/lodash.min.js"></script>

+0

多くのthx私は下のJSバージョンを選択しましたが、あなたにもupvoteを与えました。 –