对数组中的元素进行排序

时间:2015-05-11 19:31:40

标签: javascript jquery arrays

我有一个数组,其中包含我在线存储的图像列表:

var imgs = ["img1","img2","img3"...];

它们显示如下:

var child, i;
for (i = 0; i < imgs.length; i++) {

   child.style.backgroundImage = 'url(https://mywebsite/images/' + imgs[i] + '.jpg)';

   $('body').append(child);
}

但是,我希望尝试根据属性显示图片,这些图片会根据用户操作而改变。

此属性如下所示:

child.setAttribute("class", 0);

比如说,用户决定点击图像,然后他点击的图像的属性将递增。所以课程将不再是&#39; 0&#39; 0但是&#39; 1&#39;。因此,图像将放在数组中的其他图像之前。

假设&#39; img2&#39;单击,然后数组看起来像:

imgs = ["img2","img1","img3"...];

我觉得我所经历的方法效率低下,我考虑过使用对象甚至二维数组,但我不知道从哪里开始,缺乏经验。但是,如果这不是一个糟糕的方式&#34;要开始,那么如果有人向我展示如何移动阵列中的元素,我会很感激。

提前致谢。

2 个答案:

答案 0 :(得分:0)

您可以将array.sort与比较功能结合使用。这里的getClass方法是一种通过它返回图像的当前类属性的方法

imgs.sort(function(img1, img2){
    var class1 = getClass(img1);
    var class2 = getClass(img2);
    return class1 - class2;
})

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

答案 1 :(得分:0)

你可以试试这个:

Gecko.DOM.GeckoLinkElement next = new Gecko.DOM.GeckoLinkElement(geckoWebBrowser1.Document.GetElementsByClassName("resetPrice").ElementAt(1).DomObject);
next.Click();

Fiddle。在这里,我使用$('body').find("img").on("click", function() { $(this).data("count", (Number($(this).data("count")) + 1)); reOrderImages(); }); function reOrderImages() { var imgs = $('body').find("img"); for (var i = 0; i < imgs.length; i++) { var img1 = $(imgs[i]); var img2 = (imgs.length > (i + 1) ? $(imgs[(i + 1)]) : false); if (img2 && Number(img1.data("count")) < Number(img2.data("count"))) { img1.before(img2); } } }; 属性而不是data属性,这不是针对您的情况设计的。它只是用before()方法交换元素。