JS / JQuery - разделить и сопоставить строку, разделенную запятыми, и объединить результат в зависимости от значения

Успех 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

... как я могу это получить?

Поведение ключевого слова "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
0
423
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

.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);

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