Ошибка при предобработки Zabbix Javascript
Есть код, который выполняет сложение значений элементов {#BSNDOT11ESSNUMBEROFMOBILESTATIONS} и создает новый объект JSON с суммой:
var data = [
{
"{#SNMPINDEX}":"1",
"{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}":"3"
},
{
"{#SNMPINDEX}":"2",
"{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}":"2"
},
{
"{#SNMPINDEX}":"3",
"{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}":"3"
},
{
"{#SNMPINDEX}":"4",
"{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}":"2"
}
];
var result = data.reduce((acc, item)=> {acc[0]["{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}"] =""+(+(acc[0]["{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}"]) + (+(item["{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}"]))); return acc}, [{
"{#SNMPINDEX}":"1",
"{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}":"0"
}]);
console.log(result);
Этот код не работает в предобработке Zabbix javascript, там используется ducktape, ошибка "SyntaxError: parse error (line 2)"
В самом Zabbix этот код выглядит вот так:
function (value) {
var data = JSON.parse(value);
var result = data.reduce((acc, item)=> {acc[0]["{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}"] =""+(+ (acc[0]["{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}"]) + (+(item["{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}"]))); return acc}, [{
"{#SNMPINDEX}":"1",
"{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}":"0"
}]);
return JSON.stringify(result);
}
Line 2, это:
var result = data.reduce((acc, item)=> {acc[0]["{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}"] =""+(+(acc[0]["{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}"]) + (+(item["{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}"]))); return acc}, [{"{#SNMPINDEX}":"1","{#BSNDOT11ESSNUMBEROFMOBILESTATIONS}":"0"}]);
Ответы (1 шт):
Это только догадка. Поскольку ducktape, судя по документации, поддерживает JS после 5й версии лишь частично, основное подозрение падает на стрелочную функцию. Попробуйте заменить фрагмент
data.reduce((acc, item)=> {
на фрагмент
data.reduce(function (acc, item) {