2017-11-02 11 views
1

私はJSONの結果、以下のようにしているスクリプトがあります。簡素化JSONツリー

[ 
    [ 
    [ 
     "maturity_date", 
     "12/19/2017" 
    ], 
    [ 
     "interest_rate", 
     0.22 
    ], 
    [ 
     "interest_earned", 
     264 
    ], 
    [ 
     "management_fee", 
     5.28 
    ], 
    [ 
     "gross_earning", 
     1464 
    ], 
    [ 
     "investor_net_commission", 
     258.72 
    ], 
    [ 
     "investor_net_earning", 
     1458.72 
    ] 
    ], 
    [ 
    [ 
     "maturity_date", 
     "01/30/2018" 
    ], 
    [ 
     "interest_rate", 
     0.22 
    ], 
    [ 
     "interest_earned", 
     320.92 
    ], 
    [ 
     "management_fee", 
     6.42 
    ], 
    [ 
     "gross_earning", 
     1779.64 
    ], 
    [ 
     "investor_net_commission", 
     314.5 
    ], 
    [ 
     "investor_net_earning", 
     1773.22 
    ] 
    ], 
    [ 
    [ 
     "maturity_date", 
     "03/13/2018" 
    ], 
    [ 
     "interest_rate", 
     0.22 
    ], 
    [ 
     "interest_earned", 
     390.11 
    ], 
    [ 
     "management_fee", 
     7.8 
    ], 
    [ 
     "gross_earning", 
     2163.33 
    ], 
    [ 
     "investor_net_commission", 
     382.31 
    ], 
    [ 
     "investor_net_earning", 
     2155.53 
    ] 
    ] 
] 

は、私は、テーブルにそれを表示しても保存できるように、以下に示すような単純なものに構造を簡素化したいが将来はデータベーステーブルに格納されます。下記の構造は、単に説明のために1つのデータセットを最も重要な使用されますのでご注意ください構造が同じように簡略化されている場合、私はテーブルを作成するために使用することができ、スタックオーバーフローのコードがすでにあります

[ 

    {"maturity_date":"12/19/2017","interest_rate":0.22,"interest_earned":264,"management_fee":5.28,"gross_earning":1464,"investor_earning":1458.72}, 
    {"maturity_date":"01/30/2018","interest_rate":0.22,"interest_earned":264,"management_fee":5.28,"gross_earning":1464,"investor_earning":1458.72}, 
    {"maturity_date":"03/13/2018","interest_rate":0.22,"interest_earned":264,"management_fee":5.28,"gross_earning":1464,"investor_earning":1458.72}, 
] 

上記すなわち

for (var i=0; i<results.length; i++){ 
           tr = $('<tr/>'); 
           tr.append("<td>" + results[i].maturity_date + "</td>"); 
           tr.append("<td>" + results[i].interest_rate + "</td>"); 
           tr.append("<td>" + results[i].interest_earned + "</td>"); 
           tr.append("<td>" + results[i].management_fee + "</td>"); 
           tr.append("<td>" + results[i].gross_earning + "</td>"); 
           tr.append("<td>" + results[i].investor_net_commission + "</td>"); 
           tr.append("<td>" + results[i].investor_net_earning + "</td>"); 

           $('#compound_interest_table tbody').append(tr); 

          } 

質問:

  1. がどのように私は私が望ましいと示されてきた構造に初期構造を簡素化して行くことができます

  2. 最初のJSON構造を単純化せずに使用することもできます。私の理論が正しい場合、どのようにしてテーブルのJqueryスクリプトを変更することができますか?

私はこの質問がJSONからテーブルの質問に似ているが、それらを読んでいるので、私は最後のビットを把握できないので助けてください。

+0

#2 #2のための解決策は要素の位置に基づいて脆弱であるか、要素を見つけるロジックを持つだろうと私は反対しています。あなたが記述したものに初期レイアウトを変更する方が良いでしょう。 – Taplar

+0

@Taplarはい、私が変更したいもう一つの理由は、スクリプトが実行されているときに元の構造が同じであっても簡単に検索できるようにすることです。 – nelson

答えて

1

var data = [ 
 
    [ 
 
    [ 
 
     "maturity_date", 
 
     "12/19/2017" 
 
    ], 
 
    [ 
 
     "interest_rate", 
 
     0.22 
 
    ], 
 
    [ 
 
     "interest_earned", 
 
     264 
 
    ], 
 
    [ 
 
     "management_fee", 
 
     5.28 
 
    ], 
 
    [ 
 
     "gross_earning", 
 
     1464 
 
    ], 
 
    [ 
 
     "investor_net_commission", 
 
     258.72 
 
    ], 
 
    [ 
 
     "investor_net_earning", 
 
     1458.72 
 
    ] 
 
    ], 
 
    [ 
 
    [ 
 
     "maturity_date", 
 
     "01/30/2018" 
 
    ], 
 
    [ 
 
     "interest_rate", 
 
     0.22 
 
    ], 
 
    [ 
 
     "interest_earned", 
 
     320.92 
 
    ], 
 
    [ 
 
     "management_fee", 
 
     6.42 
 
    ], 
 
    [ 
 
     "gross_earning", 
 
     1779.64 
 
    ], 
 
    [ 
 
     "investor_net_commission", 
 
     314.5 
 
    ], 
 
    [ 
 
     "investor_net_earning", 
 
     1773.22 
 
    ] 
 
    ], 
 
    [ 
 
    [ 
 
     "maturity_date", 
 
     "03/13/2018" 
 
    ], 
 
    [ 
 
     "interest_rate", 
 
     0.22 
 
    ], 
 
    [ 
 
     "interest_earned", 
 
     390.11 
 
    ], 
 
    [ 
 
     "management_fee", 
 
     7.8 
 
    ], 
 
    [ 
 
     "gross_earning", 
 
     2163.33 
 
    ], 
 
    [ 
 
     "investor_net_commission", 
 
     382.31 
 
    ], 
 
    [ 
 
     "investor_net_earning", 
 
     2155.53 
 
    ] 
 
    ] 
 
]; 
 

 
var newData = data.reduce(function(collection, element){ 
 
    var rowData = {}; //create a new empty row 
 
    
 
    element.reduce(function(collection, element){ 
 
    //put the elements into the row 
 
    rowData[element[0]] = element[1]; 
 
    return rowData; 
 
    }, rowData); 
 
    
 
    collection.push(rowData); //add the row to the results 
 
    return collection; 
 
}, []); 
 

 
console.log(newData);

+0

はい。できます。ありがとうございます@タプラ – nelson

1

(1)、あなたはreducemapを使用することができます場合:

function flatten(array) { 
    return array.reduce((obj, v) => { 
    obj[v[0]] = v[1]; 
    return obj; 
    }, {}); 
} 

const array = [[], [], [], []]; 

console.log(array.map(flatten)); 
+0

答えをありがとう、Taplarは彼/彼女の答えを最初に入れて、正しい私はダニを与えたので。上にリンクされているリソースをありがとう:-) – nelson

1
listはあなたのポストに設けた構成である

マップ/削減、:

list.map(function (propList) { 
    return propList.reduce(function (o, prop) { 
    o[prop[0]] = prop[1]; 
    return o; 
    }, {}); 
});