Сортировка JavaScript возражает именем свойства

Я использую мышь Bluetooth Microsoft, и соединяющийся ключ 0000. Это характерно для многих устройств, но проверьте свое руководство.

Попытка 0000 или ключ, данный в документации как соединяющийся ключ при выяснении.

55
задан apsillers 21 November 2014 в 09:34
поделиться

2 ответа

По определению, порядок ключей в объекте undefined , поэтому вы, вероятно, не сможете сделать это с учетом требований будущего. Вместо этого вам следует подумать о сортировке этих ключей, когда объект фактически отображается пользователю. Какой бы порядок сортировки он ни использовал для внутренних целей, в любом случае не имеет значения.

По соглашению, большинство браузеров сохранят порядок ключей в объекте в том порядке, в котором они были добавлены. Итак, вы можете сделать это, но не ожидайте, что это всегда будет работать:

function sortObject(o) {
    var sorted = {},
    key, a = [];

    for (key in o) {
        if (o.hasOwnProperty(key)) {
            a.push(key);
        }
    }

    a.sort();

    for (key = 0; key < a.length; key++) {
        sorted[a[key]] = o[a[key]];
    }
    return sorted;
}
85
ответ дан 7 November 2019 в 07:18
поделиться

эта функция принимает объект и возвращает отсортированный массив массивов в форме [ключ, значение]

function (o) {
   var a = [],i;
   for(i in o){ 
     if(o.hasOwnProperty(i)){
         a.push([i,o[i]]);
     }
   }
   a.sort(function(a,b){ return a[0]>b[0]?1:-1; })
   return a;
}

Структура данных объекта не имеет четко определенного порядка. С математической точки зрения, набор ключей в объекте представляет собой неупорядоченный набор и должен рассматриваться как таковой. Если вы хотите определить порядок, вам СЛЕДУЕТ использовать массив, потому что массив, имеющий порядок, является предположением, на которое вы можете положиться. Объект, имеющий некоторый порядок, остается на усмотрение реализации.

12
ответ дан 7 November 2019 в 07:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: