2015-12-29 3 views
0

Я массив JSONперетасовки с помощью JSON jqueryui сортируемого

[ { 
    "song_name":"Gerua", 
    "file":"Gerua.mp3", 
    "img_src":"436264562.jpg", 
}, 
{ 
    "song_name":"Manma Emotion Jaage", 
    "file":"Jaage.mp3", 
    "img_src":"436264562.jpg", 

}, 
{ 
    "song_name":"Janam Janam", 
    "file":"Janam.mp3", 
    "img_src":"436264562.jpg", 
}] 

я использовал jqueryui сортируемых для отображения этого массива в поле ниже образом. enter image description here

пользователь может перетасовать этот список.

Я хочу перетасовать массив json как пользователь, когда пользователь нажимает кнопку обновления.

jsfiddle here

+0

Так вы желая объект JSon переписываться с порядком DOM элементов – Binvention

+0

да, если его возможно. –

ответ

0

Хорошо, я сделал это. Ввел временный массив и атрибут mediaid в li, прочитал значения dom при щелчке кнопки обновления, сохранил значения в массиве temp, чтобы пользователь перетасовал через mediaid, скопировал временный массив в основной массив.

$("#update").click(function(e) { 
temp_json=[]; 
$.each($("#sortable>li"), function(key, val) { 
    temp_json.push(songs_json[$(val).attr('mediaid')]); 
}); 
songs_json=temp_json; 
$("#updatedjson").html(JSON.stringify(songs_json, undefined, 2)); 
}); 

check it out!

0

Мой любимый Алгоритм Построения перетасовать массив является Durstenfeld shuffle, вот реализация JavaScript из:

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(yourArrayOfObject); // Will return shuffled array. 

Хронометраж этот алгоритм равен O (n)

+0

пользователь может перетасовать список, его неслучайно. –

Смежные вопросы