У меня есть массив, который я успешно преобразовал в строковый формат с помощью функции EcmaScript-6. Однако как я могу сделать это с помощью EcmaScript-3? Принимающей конечной точке требуется функция ES3.
Исходный массив:
formdata: [
1: {name: "gender", value: "F", focus: 0, type: "radio"}
2: {name: "firstname", value: "empty", focus: 0, type: "text"}
3: {name: "lastname", value: "empty", focus: 0, type: "text"}
4: {name: "birthday", value: "empty", focus: 0, type: "text"}
5: {name: "street", value: "empty", focus: 0, type: "text"}
6: {name: "streetNo", value: "empty", focus: 0, type: "text"}
]
Требуемый формат строки
let formdata = gender.radio|F|0;firstName.text|empty|1;lastName.text|empty|0;street.text|empty|0;houseNumber.text|empty|0;zip.text|empty|0;city.text|empty|0;country.select-one|de|0;birthdate-day.text|empty|0;birthdate-month.text|empty|0;birthdate-year.text|empty|0;email.email|empty|0;code.text|filled_out|0
Мое рабочее решение с ES6:
let res = formdata.map(({name,value,focus,type}) => `${name}.${type}|${value}|${focus}`).join(';')
Мой взгляд на переход на ES3:
var res = formdata.map(({name,value,focus,type}) {
("name" + "." + "type" + "|" + "value" + "focus").join(;)
}
Это решение, очевидно, не работает, и я также не уверен, что оно действительно для ES3 JavaScript.
Спасибо!
map добавлен в ES5, так что это, очевидно, создаст проблему. Вы можете использовать простой цикл for для перебора массива и создания строки.
Ваш исходный массив не является допустимым JavaScript. Также не является «требуемым строковым форматом» и версией ES3.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Проблемы с вашей попыткой ES3:
.join(;) недействителен JavaScript. .join(";") есть..map был представлен в ES5Так:
var formdata = [{name: "gender", value: "F", focus: 0, type: "radio"},{name: "firstname", value: "empty", focus: 0, type: "text"},{name: "lastname", value: "empty", focus: 0, type: "text"}, {name: "birthday", value: "empty", focus: 0, type: "text"},{name: "street", value: "empty", focus: 0, type: "text"},{name: "streetNo", value: "empty", focus: 0, type: "text"},];
var arr = [];
for (var i = 0; i < formdata.length; i++) {
var elem = formdata[i];
arr.push(elem.name + "." + elem.type + "|" + elem.value + "|" + elem.focus);
}
var str = arr.join(";");
console.info(str);
Используйте Babel.js для преобразования ES6 в более старые версии.