2017-03-20 5 views
-2

は、私がデータを持っているJSONオブジェクトを再アレンジ:彼らはボタンをクリックする場合は、ページ内ののように見えるデータベースから来て

[ 
    { 
    ID: 1, 
    UPC: 11111, 
    Qty: 1, 
    Price: 1.99 
    }, 
    { 
    ID: 2, 
    UPC: 11111, 
    Qty: 2, 
    Price: 1.99 
    }, 
    { 
    ID: 3, 
    UPC: 22222, 
    Qty: 1, 
    Price: 9.99 
    }, 
    { 
    ID: 4, 
    UPC: 11111, 
    Qty: 3, 
    Price: 1.99 
    }, 
    { 
    ID: 5, 
    UPC: 22222, 
    Qty: 9, 
    Price: 9.99 
    } 
] 

を、私はこのようにそれを再配置する必要があります。

[ 
    { 
    UPC: 11111, 
    Qty: 6, 
    Price: 1.99 
    }, 
    { 
    UPC: 22222, 
    Qty: 10, 
    Price: 9.99 
    } 
] 

これはどのように変換できますか?元のデータセットが必要な時間は99%です。最初は2番目のデータセットと同じように戻していますが、これはオプションではありません。

TIA。

+1

これを達成するには、コードを書く必要があります。インプリメンテーションの特定の部分にぶつかる場合は、Googleまでご連絡ください。しかし、今のところ、あなたのコードを書くようにしてほしいと思うのですが、それは良い質問にはなりません。 – mason

+0

@mason私は数日間、さまざまなことを試みてきましたが、そのすべては完全なフロップでした。私はこれを達成するための始める方法を理解することができません。なぜなら、私はこれを最初に掲示しており、少なくともいくつかの指針/示唆を得ることを望んでいました。 – Bob

+0

@BryanFritchie、jsonデータを再フォーマットするためにプログラミング言語を使用していますか? – davedwards

答えて

0

コメントに上記のリンクを使用して、私はこの作業を行うことができました。 Underscore.jsを使用するとより効率的な方法があるように感じますが、それがわからないのでこれができます。

var tmpItems = {}; 
for (var i = items.length; i--;) 
{ 
    // init an array, if it is not there 
    tmpItems[it.All[i]['UPC']] = tmpItems[it.All[i]['UPC']] || []; 

    tmpItems[it.All[i]['UPC']]['Qty'] = (tmpItems[it.All[i]['UPC']]['Qty'] || 0) + (it.All[i]['Qty'] || 0); 
    tmpItems[it.All[i]['UPC']]['Price'] = (it.All[i]['Price'] || 0); 
} 

// convert back to an object 
var newItems = []; 
for (var key in tmpItems) 
{ 
    if (tmpItems.hasOwnProperty(key)) 
    { 
    newItems.push({ 'UPC': key, 'Qty': tmpItems[key]['Qty'], 'Price': tmpItems[key]['Price'] }); 
    } 
} 
関連する問題