javascript - 在Javascript : Load some collection of data,中随机排序,返回输出

标签 javascript jquery sorting

我正在加载一些 XML 数据,将其构建到无序列表中并显示它。我现在需要对这些数据进行排序,以便每次加载时都以随机顺序显示。我是否需要完全改变我在下面执行此操作的方式,或者是否有一种简单的方法来获取数据并在使用现有代码对其进行格式化之前对其进行排序以进行输出?

这是直接加载和显示代码:

var out = '<li>';
$(xml).find('person').each(function(){
    counter++;

    var person_image   = $(this).find('person_image').text();
    var person_name    = $(this).find('person_name').text();
    var person_title   = $(this).find('person_title').text();
    var person_company = $(this).find('person_company').text();

    out = out + '<div><a href="foo/'+ belongsTo +'.php#'+ person_image +'"><img src=/images/' + belongsTo + '/' + person_image + '.jpg />' + '<br /><label><span>' + person_name + '</span><br />' + person_title + '<br />' + person_company + '</label></a><br /></div>';

    if(counter % 3 === 0 && counter !== total){
        out = out + '</li><li>';
    }
});
out = out + '</li>';
$('#display_block').html(out);

正如您所看到的,我在加载列表项时按照从 XML 检索它们的顺序构建列表项...这就是我需要随机排序的内容。我想我需要先获取所有内容(放入数组?关联数组?对象?不知道如何最好地做到这一点),随机排序,然后迭代构建我的 out 变量?

我该如何做上面所做的事情,但在此过程中坚持某种随机排序?

至于随机排序,我想出了以下似乎有效的方法:

function randomsort(a, b){ a=Math.random(); b = Math.random(); return a - b }

只需要知道如何收集数据,以便我可以应用这种排序。谢谢!

最佳答案

您可以创建一个与 XML 中“person”元素数量相同长度的单独数组。使用 XML 元素的键(0 到 n)填充此数组,并使用您的函数对其进行随机排序。然后,只需继续从该数组中移出项目,并使用获得的值来访问 XML 元素的集合。

这样,您就不必操作 XML 数据(破坏原始结构)并保留大部分已有代码。

关于javascript - 在Javascript : Load some collection of data,中随机排序,返回输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3277135/

相关文章:

从 javascript 更改值时,PHP 不打印正确的值

javascript - 在每个函数中向元素添加数据

javascript - JavaScript 映射 : TryGet wanted 中的双重搜索与未定义

javascript - 使用 jQuery 在链接上调用内联 JavaScript

java - ArrayList的排序

python - python中的Opencv排序序列

javascript - 是否可以使用 javascript 通过 POST 多次发送一个变量?

Jquery Mobile - radio 组更改

jquery - 如何使用 JavaScript 将所有计算的 CSS 样式从一个元素移动到另一个元素?

arrays - 在数组中找到具有最小差异的一对的有效方法