2016-11-04 27 views
0

也許有人可以幫忙。不能由我自己:( 弄清楚這一點,我有JSON對象的列表:按優先級排序json對象,然後隨機化所有els

{"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 + ")"}); 
    }); 
}); 

任何幫助將apriciated。

+0

添加'sortorder'屬性,將其設置爲'.priority +「。 + random_number()'然後排序。如果以後不需要,請在排序後將其刪除。 http://stackoverflow.com/questions/1527803/generating-random-whole-numbers-in-javascript-in-a-specific-range –

回答

1

可以randoml y首先對數組進行洗牌,然後按優先級進行排序。

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) 
+0

似乎沒有工作,返回一個數組相同的順序就像在JSON文件。 :( – Elvis

+0

我編輯了答案,提供了完整的代碼,你可以直接粘貼到你的控制檯。 – fafl

+0

非常感謝,這工作。:) – Elvis

相關問題