Вы можете создать строку HTML внутри вашего l oop, выбрав первый элемент из b
в качестве значения для вашего параметра и второй элемент из b
в качестве текста в вашем теге параметра. Затем вы можете добавить строку HTML версии тега option, используя эти компоненты текста и значения, к накопленной строке на каждой итерации вашего for-l oop:
var string = "1^John Smith;2^Sophia Williams;3^Emily Johnson;";
var a = string.split(";");
var html_str = "";
for (var i = 0; i < a.length-1; i++) { // loop to a.length-1 so you don't need an if-statement to check blanks
var b = a[i].split("^");
var val = b[0];
var txt = b[1];
html_str += '<option value="' + val +'">' + txt +'</option>';
}
$('#one').html(html_str);
console.log(html_str);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="one"></select>
Альтернативным подходом может быть использование регулярного выражения, чтобы получить компоненты из вашей строки и преобразовать ее в желаемую строку HTML, используя .replace()
с функцией замены:
var string = "1^John Smith;2^Sophia Williams;3^Emily Johnson;";
var html_str = string.replace(/(\d+)\^([^;]+);/g, (_, val, txt) => `<option value="${val}">${txt}</option>`);
$('#one').html(html_str);
console.log(html_str);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="one">
</select>
Вышеуказанное регулярное выражение:
(\d+)\^
: группирует любые цифры (группа 1), которые имеют карат ^
следующие за ними ([^;]+);
: группирует любые символы, не являющиеся точкой с запятой ;
(группа 2), за которыми следует точка с запятой.
Эти группы формируются для каждого вхождения в вашей строке, а затем используются в обратном вызове метода .replace()
, где группа 1 равна val
, а группа 2 равна txt
.