2017-10-01 23 views
0

同じ値の "treaty_number"があるJSONがありますが、多くの場合があります。同じ値を出力するjson

[ 
     { 
      "id": 1, 
      "treaty_number": "as32dd", 
      "name": "Name1", 
      "company": "Company1", 
      "beneficiary": "beneficiary1", 
     }, 
     { 
      "id": 2, 
      "treaty_number": "cgs22t2", 
      "name": "Name2", 
      "company": "Company2", 
      "beneficiary": "beneficiary2", 
     }, 
     { 
      "id": 3, 
      "treaty_number": "as32dd", 
      "name": "Name3", 
      "company": "Company3", 
      "beneficiary": "beneficiary3", 
     }, 
     { 
      "id": 4, 
      "treaty_number": "ff2153", 
      "name": "Name4", 
      "company": "Company4", 
      "beneficiary": "beneficiary4", 
     }, 
     { 
      "id": 5, 
      "treaty_number": "as32dd", 
      "name": "Name5", 
      "company": "Company5", 
      "beneficiary": "beneficiary5", 
     }, 
     { 
      "id": 6, 
      "treaty_number": "cgs22t2", 
      "name": "Name6", 
      "company": "Company6", 
      "beneficiary": "beneficiary6", 
     }, 
     { 
      "id": 7, 
      "treaty_number": "hg2545s", 
      "name": "Name7", 
      "company": "Company7", 
      "beneficiary": "beneficiary7", 
     }, 
     etc.. 
    ] 

どのように同じ値でグループ化できますか?私は角度2で書いていますが、それは可能であり、純粋なJSです。 (私はlodashライブラリがあることを知っていますが、データをフィルタリングすることはできませんでした)。
結論:

[ 
     { 
      "id": 1, 
      "treaty_number": "as32dd", 
      "name": "Name1", 
      "company": "Company1", 
      "beneficiary": "beneficiary1", 
     }, 
     { 
      "id": 3, 
      "treaty_number": "as32dd", 
      "name": "Name3", 
      "company": "Company3", 
      "beneficiary": "beneficiary3", 
     }, 
     { 
      "id": 5, 
      "treaty_number": "as32dd", 
      "name": "Name5", 
      "company": "Company5", 
      "beneficiary": "beneficiary5", 
     } 
]; 

[ 
      { 
       "id": 2, 
       "treaty_number": "cgs22t2", 
       "name": "Name2", 
       "company": "Company2", 
       "beneficiary": "beneficiary2", 
      }, 
      { 
       "id": 6, 
       "treaty_number": "cgs22t2", 
       "name": "Name6", 
       "company": "Company6", 
       "beneficiary": "beneficiary6", 
      } 
] 

そしてそれは、それ自身のテーブルに表示される各グループについて。
また、質問、正しく推論する方法?結局のところ、各グループ(およびそれらの多くが存在する可能性があります)に配列があり、ビュー内のデータをどのように処理し、それを1つずつテーブルに表示するのでしょうか?

<div *ngFor="let product of result"> 
       <table class="table table-striped table-header-rotated" style="background: #fff;"> 
        <thead> 
         <tr> 
          <th></th> 
          <th class="rotate-45" *ngFor="let product of result; let i=index;"> 
            <div><span>{{i+1}}</span></div> 
          </th> 
         </tr> 
        </thead> 
        <tbody> 
         <tr> 
          <td class="row-header">Treaty number №</td> 
          <td *ngFor="let product of result; let i=index;"> 
           {product.treaty_number}} 
          </td> 
         </tr> 
         <tr> 
          <td class="row-header">Name</td> 
          <td *ngFor="let product of result; let i=index;"> 
           {{product.name}} 
          </td> 
         </tr> 
         <tr> 
          <td class="row-header">Company</td> 
          <td *ngFor="let product of result; let i=index;"> 
           {{product.company}} 
          </td> 
         </tr> 
         <tr> 
          <td class="row-header">Beneficiary</td> 
          <td *ngFor="let product of result; let i=index;"> 
           {{product.beneficiary}} 
          </td> 
         </tr> 
        </tbody> 
       </table> 
      </div> 

+0

私は非常によく似た質問を書い参照[この回答](https://stackoverflow.com/a/44150606/1915893)。あなたが使用できる汎用グループについて説明します。 –

答えて

0

underscoreまたはlodasheachファンクションとgroupbyファンクションを使用して、目的の出力を実現できます。

var data = [{ 
 
    "id": 1, 
 
    "treaty_number": "as32dd", 
 
    "name": "Name1", 
 
    "company": "Company1", 
 
    "beneficiary": "beneficiary1", 
 
    }, 
 
    { 
 
    "id": 2, 
 
    "treaty_number": "cgs22t2", 
 
    "name": "Name2", 
 
    "company": "Company2", 
 
    "beneficiary": "beneficiary2", 
 
    }, 
 
    { 
 
    "id": 3, 
 
    "treaty_number": "as32dd", 
 
    "name": "Name3", 
 
    "company": "Company3", 
 
    "beneficiary": "beneficiary3", 
 
    }, 
 
    { 
 
    "id": 4, 
 
    "treaty_number": "ff2153", 
 
    "name": "Name4", 
 
    "company": "Company4", 
 
    "beneficiary": "beneficiary4", 
 
    }, 
 
    { 
 
    "id": 5, 
 
    "treaty_number": "as32dd", 
 
    "name": "Name5", 
 
    "company": "Company5", 
 
    "beneficiary": "beneficiary5", 
 
    }, 
 
    { 
 
    "id": 6, 
 
    "treaty_number": "cgs22t2", 
 
    "name": "Name6", 
 
    "company": "Company6", 
 
    "beneficiary": "beneficiary6", 
 
    }, 
 
    { 
 
    "id": 7, 
 
    "treaty_number": "hg2545s", 
 
    "name": "Name7", 
 
    "company": "Company7", 
 
    "beneficiary": "beneficiary7", 
 
    } 
 
] 
 

 
var result = []; 
 

 
_.each(_.groupBy(data, function(obj) { 
 
    return obj.treaty_number 
 
}), function(i) { 
 
    result.push(i); 
 
}); 
 

 
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js"></script>

0

ワークフローは、あなたがES6の機能を(例えば、あなたのソースファイルをtranspileするバベルを使用)を使用することを可能にした場合、私はSetデータ構造を使用します。 documentationを参照してください。

関連する問題