如何以可伸缩的方式分配javascript变量

问题描述 投票:1回答:1

假设我有以下dc.js对象:

var chart_11   = dc.barChart("#chart-11"),
    chart_12   = dc.barChart("#chart-12"),
    chart_13   = dc.barChart("#chart-13"),
    chart_21   = dc.barChart("#chart-21"),
    chart_22   = dc.barChart("#chart-22"),
    chart_23   = dc.barChart("#chart-23");

接下来,我读了一些数据并用这些数据做了一些事情:

d3.csv("../data/test_data.csv").then(function(data) {

    var var_names = ["x", "y", "z", "a", "b", "c"];

    var ndx = crossfilter(data),
        chart_11_dim = ndx.dimension(function(d) { return +d[var_names[0]]; }),
        chart_12_dim = ndx.dimension(function(d) { return +d[var_names[1]]; }),
        chart_13_dim = ndx.dimension(function(d) { return +d[var_names[2]]; }),
        chart_21_dim = ndx.dimension(function(d) { return +d[var_names[3]]; }),
        chart_22_dim = ndx.dimension(function(d) { return +d[var_names[4]]; }),
        chart_23_dim = ndx.dimension(function(d) { return +d[var_names[5]]; });

    var chart_11_min = +chart_11_dim.bottom(1)[0][var_names[0]],
        chart_11_max = +chart_11_dim.top(1)[0][var_names[0]],
        chart_12_min = +chart_12_dim.bottom(1)[0][var_names[1]],
        chart_12_max = +chart_12_dim.top(1)[0][var_names[1]],
        chart_13_min = +chart_13_dim.bottom(1)[0][var_names[2]],
        chart_13_max = +chart_13_dim.top(1)[0][var_names[2]],
        chart_21_min = +chart_21_dim.bottom(1)[0][var_names[3]],
        chart_21_max = +chart_21_dim.top(1)[0][var_names[3]],
        chart_22_min = +chart_22_dim.bottom(1)[0][var_names[4]],
        chart_22_max = +chart_22_dim.top(1)[0][var_names[4]],
        chart_23_min = +chart_23_dim.bottom(1)[0][var_names[5]],
        chart_23_max = +chart_23_dim.top(1)[0][var_names[5]];

});

虽然这有效,但它不是很干,也不容易保持规模。我知道必须有一种更好的方法来动态创建这些变量,但我不确定哪种方法(例如循环,贴图,缩小)可能会扩展到最佳。我不经常在javascript中编码,所以我希望有经验的人可以指出我正确的方向。

javascript d3.js dc.js
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.