Задать вопрос
@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. гуглил
  • Вопрос задан
  • 775 просмотров
Подписаться 2 Средний 1 комментарий
Решения вопроса 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 div = document.createElement('div');
div.innerHTML = str;
const arr = Array.prototype.map.call(div.children, n => n.outerHTML);

или

const arr = Array.from(
  new DOMParser().parseFromString(str, 'text/html').body.children,
  n => n.outerHTML
);

или

const arr = [];
for (const n of document.createRange().createContextualFragment(str).children) {
  arr.push(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);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы