簡體   English   中英

JavaScript for循環僅返回數組中的最后一項

[英]JavaScript for loop returns last item in array only

我下面有以下函數,其中兩個for循環遍歷JSON文件。 我遇到的問題是在barFactory函數中調用的第二個循環中,它僅返回數組中的最后一項。 我要如何解決這個問題,因為我在每次迭代中都調用了圖表對象來創建,因此根據我的邏輯不應該發生這種情況。

var looper = function(sec0, vz, lOrR) {

    $('#' + lOrR + 'Title').text(sec0);

    for (var i = 0; i < vz[0]['Areas'].length; i++) {
        var tText = Object.keys(vz[0]['Areas'][i]);
        var root = vz[0]['Areas'][i][tText][0];
        barFactory(root, sec0, lOrR, i, tText);

    }

    function barFactory(sec1, sec0, lOrR, i, tText) {
        var dataName;

        for (var j = 0; j < sec1[sec0].length; j++) {
            charts.title.text = sec1[sec0][j]["Label"];
            dataName = sec1[sec0][j]['Metrics'][5]['Rep Res. %'].slice(0, -1);
            charts.series[0].name = dataName;
            charts.series[0].data = [parseFloat(dataName)];
            chart = new Highcharts.Chart(charts);
        }
    }
}

有兩件事:-正如芭芭拉所說,我們沒有看到您正在更改renderTo參數-您正在使用同一對象創建圖表,這可能會導致一些錯誤

我建議做的是:

var dataName = dataName = sec1[sec0][j]['Metrics'][5]['Rep Res. %'].slice(0, -1);
chart = new Highcharts.Chart(
    Highcharts.merge(charts, {
        chart: { 
           renderTo: new_container_variable
        },
        title: {
           text: sec1[sec0][j]["Label"]
        }, 
        series: [{
            data: [parseFloat(dataName)],
            name: dataName
        }] 
    })
 );

另外,請確保: dataName = sec1[sec0][j]['Metrics'][5]['Rep Res. %'].slice(0, -1); dataName = sec1[sec0][j]['Metrics'][5]['Rep Res. %'].slice(0, -1); sec1之后的sec1是正確的路徑? 嘗試console.log(dataName); 以確保您傳遞的是正確的價值,Highcharts會出錯。

暫無
暫無

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

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