Проблема здесь:
unsortedImages[i].dataset.added = sortedImages[i].dataset.added;
Узлы DOM в обоих массивах одинаковы, а unsortedImages[i]
относится к некоторому узлу в sortedImages
. Вы изменяете атрибут added
на узле в unsortedImages
, и он изменяется в sortedImages
.
Чтобы избежать этого, вы можете заменить цикл for in
следующим кодом:
const attrs = sortedImages.map(node => ({
src: node.src,
alt: node.alt,
download: node.dataset.download,
added: node.dataset.added,
supports: node.dataset.supports,
maker: node.dataset.maker,
}))
attrs.forEach((item, i) => {
unsortedImages[i].src = item.src;
unsortedImages[i].alt = item.alt;
unsortedImages[i].dataset.download = item.download;
unsortedImages[i].dataset.added = item.added;
unsortedImages[i].dataset.supports = item.supports;
unsortedImages[i].dataset.maker = item.maker;
})