2016-05-18 9 views
1

REST APIから返されるデータがあります。私はAngular 2アプリのための特定のフォーマットでそれをしたいと思います。このデータをアンダースコアjでどのように変換できますか?

アンダースコアjを使用して次のデータ変換を実行するにはどうすればよいですか? RESTのAPIから返された

データ:

[  
    { 
     "ProductVariantID": "133", 
     "ProductID": "259", 
     "ProductGender": "Male", 
     "Size": "17.5", 
     "Color": "Red", 
     "MSRP": "0", 
     "MAP": "0", 
     "UPC": "99999106" 
    }, 
    { 
     "ProductVariantID": "128", 
     "ProductID": "259", 
     "ProductGender": "Male", 
     "Size": "17.5", 
     "Color": "Blue", 
     "MSRP": "0", 
     "MAP": "0", 
     "UPC": "99999101" 
    }, 
    { 
     "ProductVariantID": "130", 
     "ProductID": "259", 
     "ProductGender": "Male", 
     "Size": "19.5", 
     "Color": "Blue", 
     "MSRP": "0", 
     "MAP": "0", 
     "UPC": "99999103" 
    }, 
    { 
     "ProductVariantID": "129", 
     "ProductID": "259", 
     "ProductGender": "Male", 
     "Size": "18.5", 
     "Color": "Blue", 
     "MSRP": "0", 
     "MAP": "0", 
     "UPC": "99999102" 
    }, 
    { 
     "ProductVariantID": "132", 
     "ProductID": "259", 
     "ProductGender": "Male", 
     "Size": "15.5", 
     "Color": "Red", 
     "MSRP": "0", 
     "MAP": "0", 
     "UPC": "99999105" 
    },  
    { 
     "ProductVariantID": "131", 
     "ProductID": "259", 
     "ProductGender": "Male", 
     "Size": "21.5", 
     "Color": "Blue", 
     "MSRP": "0", 
     "MAP": "0", 
     "UPC": "99999104" 
    }, 
    { 
     "ProductVariantID": "127", 
     "ProductID": "259", 
     "ProductGender": "Male", 
     "Size": "15.5", 
     "Color": "Blue", 
     "MSRP": "0", 
     "MAP": "0", 
     "UPC": "99999100" 
    }  
] 

私は次のようにそれを変換したいです。最上位の配列は、そのオブジェクトの "Color"プロパティでアルファベット順にソートされ、Variants配列はそのオブジェクトの数値的に "Size"プロパティによってソートされます。基本的には、色でグループ化され、元のオブジェクトを「バリアント」配列プロパティに格納した新しいオブジェクト配列が必要です。

所望の出力:

[ 
    { 
     "Color": "Blue", 
     "Variants": [ 
      { 
       "ProductVariantID": "127", 
       "ProductID": "259", 
       "ProductGender": "Male", 
       "Size": "15.5", 
       "Color": "Blue", 
       "MSRP": "0", 
       "MAP": "0", 
       "UPC": "99999100" 
      }, 
      { 
       "ProductVariantID": "128", 
       "ProductID": "259", 
       "ProductGender": "Male", 
       "Size": "17.5", 
       "Color": "Blue", 
       "MSRP": "0", 
       "MAP": "0", 
       "UPC": "99999101" 
      }, 
      { 
       "ProductVariantID": "129", 
       "ProductID": "259", 
       "ProductGender": "Male", 
       "Size": "18.5", 
       "Color": "Blue", 
       "MSRP": "0", 
       "MAP": "0", 
       "UPC": "99999102" 
      }, 
      { 
       "ProductVariantID": "130", 
       "ProductID": "259", 
       "ProductGender": "Male", 
       "Size": "19.5", 
       "Color": "Blue", 
       "MSRP": "0", 
       "MAP": "0", 
       "UPC": "99999103" 
      }, 
      { 
       "ProductVariantID": "131", 
       "ProductID": "259", 
       "ProductGender": "Male", 
       "Size": "21.5", 
       "Color": "Blue", 
       "MSRP": "0", 
       "MAP": "0", 
       "UPC": "99999104" 
      }  
     ],    
    } 
    { 
     "Color": "Red", 
     "Variants": [ 
      { 
       "ProductVariantID": "132", 
       "ProductID": "259", 
       "ProductGender": "Male", 
       "Size": "15.5", 
       "Color": "Red", 
       "MSRP": "0", 
       "MAP": "0", 
       "UPC": "99999101" 
      }, 
      { 
       "ProductVariantID": "133", 
       "ProductID": "259", 
       "ProductGender": "Male", 
       "Size": "17.5", 
       "Color": "Red", 
       "MSRP": "0", 
       "MAP": "0", 
       "UPC": "99999101" 
      },  
     ],    
    } 
] 
+0

を作成することにより、グループの後にマップを使用することができます。 –

+0

なぜアンダースコアを使用する必要がありますか? forループと多次元配列を使って簡単に行うことができます – theatlasroom

+0

アンダースコアを使用する必要はありませんが、アンダースコアでこれを行うためのエレガントな方法があるようです... groupBy()関数 { "ブルー":[ { "ProductVariantID": "127"、 "商品コード": "259"、 "ProductGender": "男性"、 「それは私にこの形式のデータを提供しますサイズ ": "15.5"、 "カラー": "青"、 "MSRP": "0"、 "MAP": "0"、 "UPC": "99999100" }、 ... ]、 "赤":[ .... ] } – Foxy

答えて

1

あなたは私たちが助ける前にあなたが試したものを、私たちを表示する必要があります必要な出力

var temp1=_.groupBy(result, 'Color'); 
_.map(temp1,function(item,key){return {'Color':key,'Variants':item}}); 
関連する問題