簡體   English   中英

從JSON循環並提取值並推送到數組

[英]Looping and extracting values from JSON and pushing to Arrays

我有一個JSON文件,我需要在其中訪問其中一個值,該值是一個包含許多鍵和值的對象,這些鍵和值是進一步的對象。 像這樣:

"lineChart": {
    "Fri Jul 28, 2017": {
        "renewalFee_EUR": 1165,
        "extensionFee_EUR": 0,
        "renewalFee_USD": 5941.5,
        "extensionFee_USD": 0,
        "processingFee_USD": 25,
        "expressFee_USD": 0,
        "urgentFee_USD": 0,
        "latePayPenalty_USD": 0,
        "fxRate": 5.1,
        "subTotal_USD": 5966.5
    },
    "Tue Aug 1, 2017": {
        "renewalFee_EUR": 1165,
        "extensionFee_EUR": 0,
        "renewalFee_USD": 2411.55,
        "extensionFee_USD": 0,
        "processingFee_USD": 25,
        "expressFee_USD": 0,
        "urgentFee_USD": 0,
        "latePayPenalty_USD": 0,
        "fxRate": 2.07,
        "subTotal_USD": 2436.55
    }
}

我已經能夠將鍵值即Fri Jul 28, 2017Fri Jul 28, 2017在一個數組中,該數組用於將數據傳遞到視圖中的圖表。 這部分工作正常。

var caLine = vm.graph.lineChart; 
// THIS STORES THE RETURNED VALUE(GRAPH DATA) FROM A REST REQUEST
//IN MY ROUTER FOLDER (USING ANGULARJS) 

lineLabelArr = [];

for (var prop in caLine) {
    if (caLine.hasOwnProperty(prop)) {
        lineLabelArr.push(prop)
    }
}

vm.labels = lineLabelArr; //VM.LABELS IS UED TO BIND DATA TO THE CHART'S DIRECTIVES

我只需要JSON文件中subTotal_USD下的數據subTotal_USD在圖表中顯示為數據。

如何遍歷lineChart對象中的每個屬性,如何從subTotal_USD鍵中提取值,並將其存儲在可用於在圖表中顯示數據的數組中? 我覺得這讓事情變得復雜了。

您已經有了一系列鍵,可以使用forEachmapreduce等來循環。

您可以使用map在鍵數組之外創建一個新數組:

 const lineChart = {"Fri Jul 28, 2017":{renewalFee_EUR:1165,extensionFee_EUR:0,renewalFee_USD:5941.5,extensionFee_USD:0,processingFee_USD:25,expressFee_USD:0,urgentFee_USD:0,latePayPenalty_USD:0,fxRate:5.1,subTotal_USD:5966.5},"Tue Aug 1, 2017":{renewalFee_EUR:1165,extensionFee_EUR:0,renewalFee_USD:2411.55,extensionFee_USD:0,processingFee_USD:25,expressFee_USD:0,urgentFee_USD:0,latePayPenalty_USD:0,fxRate:2.07,subTotal_USD:2436.55}}; const lineLabelArr = []; for (var prop in lineChart) { if (lineChart.hasOwnProperty(prop)) { lineLabelArr.push(prop) } } console.log( lineLabelArr.map(key => lineChart[key].subTotal_USD) ); 

當然,有很多方法可以遍歷對象的鍵。 就個人而言,我寧願做一個循環:

 const lineChart = {"Fri Jul 28, 2017":{renewalFee_EUR:1165,extensionFee_EUR:0,renewalFee_USD:5941.5,extensionFee_USD:0,processingFee_USD:25,expressFee_USD:0,urgentFee_USD:0,latePayPenalty_USD:0,fxRate:5.1,subTotal_USD:5966.5},"Tue Aug 1, 2017":{renewalFee_EUR:1165,extensionFee_EUR:0,renewalFee_USD:2411.55,extensionFee_USD:0,processingFee_USD:25,expressFee_USD:0,urgentFee_USD:0,latePayPenalty_USD:0,fxRate:2.07,subTotal_USD:2436.55}}; const labels = []; const subTotals = []; Object.keys(lineChart).forEach(day => { const dayData = lineChart[day]; labels.push(day); subTotals.push(dayData.subTotal_USD); }); console.log("Labels:", labels); console.log("subTotals:", subTotals); 

for(var i = 0; i < caLine.length; i++) {
    var datObj = caLine[i];
    if (datObj != null) {
        var subTotoalUSD = datObj["subTotal_USD"];
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM