Интеграция цикла JavaScript for в пользовательскую функцию

У меня есть работающая функция EcmaScript-3, которая преобразует массив в определенный строковый формат.

Множество:

ft: [
    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"}
]

Конкретный формат строки:

ft=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

Моя рабочая функция, которая преобразует массив в определенный формат строки:

var arr = [];
for (var i = 0; i < ft.length; i++) {
    var elem = ft[i];
    arr.push(elem.name + "." + elem.type + "|" + elem.value + "|" + elem.focus);
}
var str = arr.join(";");

console.info(str);

Проблема:

Мне нужна функция (в формате EcmaScript-3), которую можно вызвать так:

var a = tracking()(ft, false);
console.info(a); 

// the console.info(a) should provide as a result: ft=gender.radio|F|0;firstName.text|...; false;

Мое решение (не работает)

function tracking() {
  return function (ft, submitted) {
     var arr = [];
     for (var i = 0; i < ft.length; i++) {
       var elem = ft[i];
       arr.push(elem.name + "." + elem.type + "|" + elem.value + "|" + 
       elem.focus + "submitted");
     }
     var str = arr.join(";");
  }
}

Спасибо!

Внутренняя функция ваших решений ничего не возвращает. Просто верните str и все заработает. jsfiddle.net/goa2z159 Возможно, вам нужно поработать над окончательным форматом, поскольку он отличается, но в любом случае начните с возврата чего-нибудь.

briosheje 04.04.2019 12:11
return str и готово
Jonas Wilms 04.04.2019 12:13

@JonasWilms вывод отличается, потому что он добавил «elem.focus + submit» внутри push. Не знаю почему, но все же........

briosheje 04.04.2019 12:14

О да, я думаю, это должно быть + "|" + submitted

Jonas Wilms 04.04.2019 12:15

э-э-э-э, судя по результату, который он предоставил, непонятно, как получилось firstName.text|empty|1;, так как фокус всегда равен 0. Также непонятно, как следует позиционировать это «отправлено», так как оно отсутствует в исходном результате.

briosheje 04.04.2019 12:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, вы сделали это слишком сложным. Это может быть так просто, как это

function tracking (ft, submitted) {
  var arr = [];
  for (var i = 0; i < ft.length; i++) {
    var elem = ft[i];
    arr.push(elem.name + "." + elem.type + "|" + elem.value + "|" + 
    elem.focus + "submitted");
  }
  return arr.join(";");
}

И я сомневаюсь, почему вы получили этот представленный параметр. Если вы хотите использовать его как переменную, просто удалите кавычки, помещая его в массив.

Другие вопросы по теме