Экспорт в CSV-файл из векторного слоя - ошибка IE11 с синтаксисом => - PullRequest
0 голосов
/ 04 декабря 2018

Ниже код работает в chrome, но в IE 11 возникает синтаксическая ошибка из-за выражения =>.

Я использовал выражение => для фильтрации данных.

Ошибка: критическая ошибка Javascript в строке xx ...... \ nSCRIPT1002: синтаксическая ошибка и прерывание отладки предупреждения в Visual studio

Будут оценены любые предложения.

Спасибо.

function customExportCSV(evt) {

 var data = propertylayer._graphicsVal;
 var csv = convertArrayOfObjectsToCSV({
 data: data
 });
if (!csv.match(/^data:text\/csv/i)) {
 csv = 'data:text/csv;charset=utf-8,' + csv;
 }
 //var blob = new Blob([csv], { type: "text/csv" });
 //if (navigator.msSaveBlob) { // IE 10+
 // //var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
 // //navigator.msSaveBlob(blob, "Exportdata.csv");
 // navigator.msSaveBlob(blob, "csvname.csv")
 //}
 var encodedUri = encodeURI(csv);
 var link = document.createElement('a');
 link.setAttribute('href', encodedUri);
 link.setAttribute('download', "Exportdata.csv");
 link.click();



 }
 function convertArrayOfObjectsToCSV(value) {

 var result, ctr, keys, columnDelimiter, lineDelimiter, data;
data = Array.from(new Set(value.data)).filter(d => d).map(d => d.attributes) || null;
if (!data || !data.length) {
 return null;
 }

columnDelimiter = value.columnDelimiter || ',';
 lineDelimiter = value.lineDelimiter || '\n';
keys = Object.keys(data[1]);
 result = '';
 result += keys.join(columnDelimiter);
 result += lineDelimiter;
data.forEach(function (item) {
 ctr = 0;
 keys.forEach(function (key) {
 if (ctr > 0)
 result += columnDelimiter;
 result += item[key];
 ctr++;
 });
 result += lineDelimiter;
 });

 return result;
 }

1 Ответ

0 голосов
/ 04 декабря 2018

Функция стрелки (=>) - это синтаксис ES6, который не поддерживается IE11.Вам просто нужно заменить его на старое ES5 выражение функции синтаксис.

 function convertArrayOfObjectsToCSV(value) {
     var result, ctr, keys, columnDelimiter, lineDelimiter, data;
     data = Array.from(new Set(value.data)).filter(function(d){return d;}).map(function(d){return d.attributes;}) || null;
     if (!data || !data.length) {
         return null;
     }
 }
...