Успех ajax возвращает мне строку, разделенную запятыми (1,2,3), которую я разделяю и сопоставляю, чтобы получить .text () определенных параметров выбора ... например:
js:
success:function(data){
console.info(data.added.allocatedTo);
var selectText;
var joinText;
var stringResult = data.added.allocatedTo;
var splitResult = stringResult.split(",").map(function(port) {
selectText = $('.select-portfolio option[value='+port+']').text();
joinText += selectText+',';
});
console.info(joinText);
}
Вышеупомянутое дает мне следующее в консоли:
Приставка:
1,2,3
undefinedPortfolio Test 01,
undefinedPortfolio Test 01,Portfolio Test 02,
undefinedPortfolio Test 01,Portfolio Test 02,Portfolio Test 03,
... но я хочу вот что:
Portfolio Test 01, Portfolio Test 02, Portfolio Test 03
... как я могу это получить?



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


.map ожидает, что вы вернете значение из функции, которую вы ему предоставили:
const joinText = stringResult.split(",").map(function(port) {
return $('.select-portfolio option[value=' + port + ']').text();
});
console.info(joinText);
(В настоящее время вы используете .map как forEach, что не подходит для того, чего вы пытаетесь достичь)
Явно вы не инициализировали joinText пустой строкой. Простое объявление его как var инициализирует его значение как undefined. Когда вы добавляете к нему строку, она преобразуется в строку "undefined", так что теперь у вас есть "undefined" + "Portfolio Test 01,".
Чтобы исправить это, вы можете инициализировать его при объявлении:
var joinText = '';
** Обновлено: другие ответы верны, поскольку вы используете метод .map как цикл .forEach или for; однако я просто указывал на то, что помещало этот текст undefined перед выходными строками.
Метод map для массива возвращает новый массив, используя данную функцию для «сопоставления» элемента (значения) в этом массиве с новым элементом (значением) в результирующем массиве.
Вы можете использовать метод join для массивов, чтобы отменить разбиение.
Итак, что вы хотите:
const joinText = stringResult.split(",")
.map(port => $('.select-portfolio option[value=' + port + ']').text())
.join(", ");
console.info(joinText);