Я пытаюсь создать "общую" функцию построения диаграмм, которая принимает ряд параметров для наложения различных значений данных с разными метками и базовыми значениями. Для этого я создал следующую функцию:
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]]);
Должен делать то, что вы хотите
let { dateTime, [valToChart] } = e
При деструктурировании объекта, если вы не извлекаете свойство сразу в переменную (как, например, сdateTime
), вам нужно указать имя свойства.let { dateTime, [valToChart] } = e;
приводить к двум переменным,dateTime
иaverageJitterInMs
илиroundTripLatencyInMs
- деструктуризация не работает таким образом