【问题标题】:Sort json objects by priority then randomize everything els按优先级对 json 对象进行排序,然后将所有其他内容随机化
【发布时间】:2017-03-18 01:30:50
【问题描述】:

也许有人可以帮忙。我自己无法弄清楚这一点:( 我有 json 对象的列表:

{"widget_foto": {"photos": [
    {
        "picThumb": "../../preview_stuff/img/widget-3-1.png",
        "picOrig": "../../preview_stuff/img/widget-3-1.png",
        "galeryUrl": "",
        "shareUrl": "",
        "priority": 0
    },
    {
        "picThumb": "../../preview_stuff/img/widget-3-2.png",
        "picOrig": "../../preview_stuff/img/widget-3-2.png",
        "galeryUrl": "",
        "shareUrl": "",
        "priority": 2
    },}}

我需要按优先级排序对象,我已经做了,但我不知道如何随机化优先级为 0 或对象优先级是否相等的对象。

这是我目前的代码。

$(function(){
var url="../json/foto.json";
$.getJSON(url, function(json){
    var fotoWidget = json.widget_foto;
    var widget3 = ".col-widget-3" + " ";

    //Populate content
    var byPriority = fotoWidget.photos.slice(0);

    byPriority.sort(function(a,b){
        return b.priority - a.priority;
    });
    $.each(byPriority, function(index, value){
        $(widget3 + ".widget-3-" + (index + 1)).css({"background-image": "url(images/" + value.picOrig + ")"});
    });
});

任何帮助都将不胜感激。

【问题讨论】:

  • 添加一个 'sortorder' 属性,将其设置为 .priority + "." + random_number() 然后对其进行排序。如果您以后不需要它,请在排序后将其删除。 stackoverflow.com/questions/1527803/…

标签: jquery json object random


【解决方案1】:

可以先随机打乱数组,再按优先级排序。

var data = [
    {id:"0", "p":0},
    {id:"1", "p":0},
    {id:"2", "p":5},
    {id:"3", "p":5},
    {id:"4", "p":2},
    {id:"5", "p":2},
    {id:"6", "p":4},
    {id:"7", "p":4},
    {id:"8", "p":1},
    {id:"9", "p":1}
]
function shuffleArray(array) {
    for (var i = array.length - 1; i > 0; i--) {
        var j = Math.floor(Math.random() * (i + 1));
        var temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
    return array;
}
shuffleArray(data)
data.sort( (a, b) => a.p - b.p )
JSON.stringify(data)

【讨论】:

  • 似乎不起作用,返回一个与 json 文件中相同顺序的数组。 :(
  • 我编辑了答案以提供您可以直接粘贴到控制台中的完整代码。
猜你喜欢
  • 1970-01-01
  • 2019-10-04
  • 1970-01-01
  • 1970-01-01
  • 2011-01-15
  • 2021-12-28
  • 2011-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多