繁体   English   中英

在“ let”中将字符串传递为对象的属性将得到“ Unexpected token}”

[英]Passing string to function as an object's property in “let” gives “Unexpected token }”

我正在尝试制作一个“通用”图表函数,该函数采用一系列参数来绘制具有不同标签和基线值的不同数据值。 我创建了以下函数来处理此问题:

function ProcessChart(obj, valToChart, desc, element, baselineVal) {
    let arr = obj.map(e => {
        let { dateTime, [valToChart] } = e; // ERROR: Unexpected token }
        return [new Date(dateTime), +[valToChart]];
    });

    arr.unshift(["DateTime", desc]);
    var data = google.visualization.arrayToDataTable(arr)

    var options = {
        title: desc + " for " + obj[0].computerName,
        curveType: 'function',
        legend: { position: 'bottom' },
        animation: {
            startup: false,
            duration: 500
        },
        vAxis: {
            baseline: baselineVal,
            baselineColor: 'red'
        }
    };

    var chart = new 
    google.visualization.LineChart(document.getElementById(element));
    chart.draw(data, options);
}

呼叫者:

google.charts.setOnLoadCallback(ProcessChart(obj, "averageJitterInMs", "Average Jitter (ms)", "line-jitter-8hr", 10))
google.charts.setOnLoadCallback(ProcessChart(obj, "roundTripLatencyInMs", 'Round-Trip Latency (ms)', 'line-delay-8-hr', 8))

问题是我传递的valToChart给出了一个错误:

意外的标记 }

我还有另一种方式可以将此表达为obj对象上的动态属性吗? 我已经在每个位置使用“硬编码”值测试了此代码,并且工作正常。

无需销毁(无论如何都无法这样做)

let arr = obj.map(e => [new Date(e.dateTime), +e[valToChart]]);

应该做你想做的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM