Задать вопрос
Mesuti
@Mesuti

Как отсортировать массив в обратном порядке?

Привет!

Элементы массива надо вставить с помощью .after()
Однако, в таком случае элементы встают в обратном порядке.
Возможно ли вывести в обратном порядке?

Или целесообразней изменить метод вставки на .before()?

  • Вопрос задан
  • 199 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 3
dollar
@dollar
Делай добро и бросай его в воду.
Можно просто через цикл с обращением по индексам в обратном порядке.
for (let i = arrayWords.length-1; i >= 0; i--) {
  let n = arrayWords[i];
  //..............
}

Кстати, а почему вы в такой ситуации использовали map вместо forEach?
Ответ написан
twobomb
@twobomb
var arrayWords = ['a','b','c','d','f'];

arrayWords.reverse().map(n => {
  let p = document.createElement('p');
  p.innerHTML = n;
  document.querySelector('.listing').after(p);
})
Ответ написан
Комментировать
0xD34F
@0xD34F Куратор тега JavaScript
const first = document.querySelector('.listing');
const tag = 'p';
const arr = [...'ABCDEF'];

Обратный порядок не нужен:

first.after(...arr.map(n => {
  const el = document.createElement(tag);
  el.innerHTML = n;
  return el;
}));

// или

first.replaceWith(first, ...arr.reduce((acc, n, i) => (
  (acc[i] = document.createElement(tag)).innerHTML = n,
  acc
), []));

// или

arr.reduce((prev, n) => (
  prev.insertAdjacentElement('afterend', document.createElement(tag)),
  prev.nextSibling.innerHTML = n,
  prev.nextSibling
), first);

// или

const parent = first.parentNode;
const nodes = parent.childNodes;

arr.forEach(function(n) {
  const el = document.createElement(tag);
  el.innerHTML = n;
  parent.insertBefore(el, nodes[++this[0]]);
}, [ Array.prototype.indexOf.call(nodes, first) ]);

// или

first.insertAdjacentHTML(
  'afterend',
  arr.map(n => `<${tag}>${n}</${tag}>`).join('')
);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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