Сортировка вставки с использованием JQuery - PullRequest
1 голос
/ 06 октября 2011

У меня есть код, подобный этому (отображение информации из внешнего сервиса):

var myList =  {'id1' : {prop1:'v1', prop2:'v2'}, 
               'id2' : {prop1:'v3', prop2:'v4'}}; 

for (var k in myList) {
    var html = '<div id="xxx">stuff</div>';
    html.data('item', myList[k]);
    $('#parentDiv').append(html);
}

Поскольку я не могу полагаться на порядок при использовании for (x in y) Я хочу вставить элементы в определенную позицию, скажем, упорядоченную по prop1.

Итак, как я могу изменить добавление к вставке после элемента, чей prop1 сразу меньше фактического вставляемого элемента?

Ответы [ 2 ]

1 голос
/ 06 октября 2011

Как насчет использования массива:

var myList =  {'id1' : {prop1:'v1', prop2:'v2'}, 
               'id2' : {prop1:'v30', prop2:'v4'},
               'id3' : {prop1:'v13', prop2:'v4'}},
    sorted = []; 

for (var k in myList) {
    sorted.push(myList[k]);
}
sorted.sort(function (a,b) {
 return a.prop1 > b.prop1;   
});

for (var i = 0; i < sorted.length; i++) {
    var html = '<div id="xxx">stuff</div>';
    html.data('item', sorted[i]);
    $('#parentDiv').append(html);
}
1 голос
/ 06 октября 2011

Вам может понадобиться сначала отсортировать их?

tmpList = [] // turn myList to array
tmpList.sort(function (a, b) { return a.prop1 > b.prop1});
// turn tmpList to dict
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...