需要在Google Chart中检查多个变量(或隐藏未透过的值)

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

可能有更好的方法来做到这一点,但我有一个谷歌图表,我必须传递24个变量。

最终目标是仅显示实际传递的数字,并忽略不实际传递的数字。我知道如果我做了24个if语句,这是可能的,但我想知道是否有更好的方法来做到这一点。

基本上我正在调用这个函数 function drawGoogFinanceChart(chartnamelong, chartobj) {

然后我将所有参数设置为创建的内容。我这样做,因为否则图表中断(它无法处理未定义)。

    {
        var v1 = chartobj.onemil;
        var v2 = chartobj.halfmil
        var v3 = chartobj.onehundo;
        var v4 = chartobj.fiftythous;
        var v5 = chartobj.tenthous;
        var v6 = chartobj.ninethous;
        var v7 = chartobj.eightthous;
        var v8 = chartobj.seventhous;
        var v9 = chartobj.sixthous;
        var v10 = chartobj.fivethous;
        var v11 = chartobj.fourthous;
        var v12 = chartobj.threethous;
        var v13 = chartobj.twothous;
        var v14 = chartobj.onethous;
        var v15 = chartobj.ninehund;
        var v16 = chartobj.eighthund;
        var v17 = chartobj.sevenhund;
        var v18 = chartobj.sixhund;
        var v19 = chartobj.fivehund;
        var v20 = chartobj.fourhund;
        var v21 = chartobj.threehund;
        var v22 = chartobj.twohund;
        var v23 = chartobj.hund;
        var v24 = chartobj.other;
    }

然后我显然把所有变量都放到了图表中......

var data = google.visualization.arrayToDataTable([
['Amount', 'Respondents'],
['1 Million', v1],
['500,000', v2],
['100,000', v3],
['50,000', v4],
['10,000', v5],
['9,000', v6],
['8,000', v7],
['7,000', v8],
['6,000', v9],
['5,000', v10],
['4,000', v11],
['3,000', v12],
['2,000', v13],
['1,000', v14],
['900', v15],
['800', v16],
['700', v17],
['600', v18],
['500', v19],
['400', v20],
['300', v21],
['200', v22],
['100', v23],
['Other', v24]
]);

这将绘制一个类似于此的图表:Google Chart

我宁愿不显示零值。我知道如果我做了类似的话,我可以做到这一点

if (chartobj.onemil != undefined) { data.push(['1 Million', v1]); }

但那时我必须这样做24次。我只是想知道是否有更清洁的方法来做到这一点(或完全不同的方式来做它!)

javascript charts google-visualization
1个回答
0
投票

带过滤器的Object.entries应该可以胜任 因为Object.entries支持不是那么好,所以你应该使用polyfill

// const obj = { foo: 'bar', baz: 42 };
// console.log(Object.entries(obj));
// [ ['foo', 'bar'], ['baz', 42] ]

// filter will only return the arrays with value different than undefined
const data = Object.entrie(chartobj).filter(([key, value]) => value !== undefined);
google.visualization.arrayToDataTable(data)
© www.soinside.com 2019 - 2024. All rights reserved.