Парсинг HTML в массив
Есть HTML в виде:
<b>Element1</b> text1<br>
<b>Element2</b> text2<br>
Как извлечь в массив все Element со значением Text с помощью JQuery?
[{Element1: 'text1'}, {Element2: 'text2'}]
Ответы (2 шт):
Автор решения: DiD
→ Ссылка
let result =
toParse.innerHTML.trim().split('<br>')
.map(row=>/^<b>([^<]+)<\/b>\s*(.*)$/.exec(row.trim()))
.filter(arr=>arr)
.map(arr=>Object.fromEntries([arr.splice(1,2)]));
console.log(result);
<div id="toParse">
<b>Element1</b> text1<br>
<b>Element2</b> text2<br>
</div>
Автор решения: UModeL
→ Ссылка
Использование jQuery для данной задачи неоправданно, но раз так указано в метках вопроса, то будет так:
let arr = [];
$('b').each(function() {
arr.push({[this.textContent]: this.nextSibling.textContent.trim()});
});
console.log(arr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<b>Element1</b> text1<br>
<b>Element2</b> text2<br>