@v-orlov

Как сделать массив из текста (html) на javascipt?

У меня есть строка:
'<div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div>'


Как это можно привести к виду?
arr = ['<div class="abc"></div>' , '<div class="abc"></div>' , ...]

и так далее, чтобы на этот объект действовали методы массива (slice например)?

P.S. гуглил
  • Вопрос задан
  • 750 просмотров
Решения вопроса 4
pterodaktil
@pterodaktil
js developer
const str = '<div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div>';

const result = str.split('</div>').reduce((prev, curr, index, arr) => { 
  if (index !== arr.length - 1) prev[index] = curr + '</div>'; 
  return prev; 
}, []);
// ["<div class="abc"></div>", "<div class="abc"></div>", "<div class="abc"></div>", "<div class="abc"></div>", "<div class="abc"></div>", "<div class="abc"></div>", "<div class="abc"></div>", "<div class="abc"></div>", "<div class="abc"></div>", "<div class="abc"></div>"]
Ответ написан
Комментировать
rockon404
@rockon404
Frontend Developer
простой вариант
const str = "<div class='abc'></div><div class='abc'></div>";
const array = $(str);

array.each((_, el) => console.log(el));

//  результат 
//  <div class="abc"></div>
//  <div class="abc"></div>


Стоит уточнить, что это не массив, а объект JQuery. Плюс такого решения в том, что теги могут быть абсолютно любые.
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
const el = document.createElement('div');
el.innerHTML = str;
const arr = [...el.children].map(n => n.outerHTML);

или

const parser = new DOMParser();
const html = parser.parseFromString(str, 'text/html');
const arr = Array.from(html.body.children, n => n.outerHTML);
Ответ написан
Комментировать
@Azperin
Дилетант
var str = '<div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div><div class="abc"></div>';
var regexp = /(<div class="abc"><\/div>)/g;
var matches_array = str.match(regexp);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы