For循环重复进行一半

问题描述 投票:1回答:1

我有一个图像数组,这些图像按降序排列。我想将该数组设置为我网站上的图像列表。在用于设置图像的for循环期间,它恰好进入for循环的一半,然后从中间开始反转循环,并一直返回到开始。

function sortBy(sort){
  if (sort == "newold"){
    var sortedImages = Array.from(document.getElementsByTagName("img"));
    sortedImages.splice(-1,1);
    sortedImages.sort(function(a,b){
      var contentA =parseInt(a.dataset.added,10);
      var contentB =parseInt(b.dataset.added,10);
      return (contentB - contentA);
    });
    console.log(sortedImages);
    var unsortedImages = Array.from(document.getElementsByTagName("img"));
    unsortedImages.splice(-1,1);
    console.log(unsortedImages);
    for(i in sortedImages){
      console.log(sortedImages[i].dataset.added);
      unsortedImages[i].src = sortedImages[i].src;
      unsortedImages[i].alt = sortedImages[i].alt;
      unsortedImages[i].dataset.download = sortedImages[i].dataset.download;
      unsortedImages[i].dataset.added = sortedImages[i].dataset.added;
      unsortedImages[i].dataset.supports = sortedImages[i].dataset.supports;
      unsortedImages[i].dataset.maker = sortedImages[i].dataset.maker;

    }
  }
}

它应该按降序列出dataset.added值,每个元素都有一个设置的整数,从1开始并从那里开始。list of the dataset.added values as it runs through the for loop该屏幕快照顶部的数组都以正确的顺序排列,第一个是sortedImages,第二个是unsortedImages。

javascript html arrays image sorting
1个回答
0
投票

问题在这里:

unsortedImages[i].dataset.added = sortedImages[i].dataset.added;

两个数组中的DOM节点相同,并且unsortedImages[i]引用sortedImages中的某个节点。