Для сортировки массива, которую вы используете Array.sort
, с соответствующей функцией сравнения в качестве аргумента. Функция сравнения принимает два аргумента, которые в этом случае должны быть объектами только с одним свойством. Вы хотите сортировать, основываясь на названии этого свойства.
Получение имен свойств объекта является наиболее удобным с Object.keys
, поэтому мы имеем эту функцию сравнения:
function(x, y) {
var keyX = Object.keys(x)[0],
keyY = Object.keys(y)[0];
if (keyX == keyY) return 0;
return keyX < keyY ? -1 : 1;
}
Он может быть использован, как это:
var input = [{ d: "delete the text" }, { c: "copy the text" } ];
var sorted = input.sort(function(x, y) {
var keyX = Object.keys(x)[0],
keyY = Object.keys(y)[0];
if (keyX == keyY) return 0;
return keyX < keyY ? -1 : 1;
});
See it in action.
Заметим, что Object.keys
требует достаточно современного браузера (в частности, версии IE не менее 9); в противном случае вам нужно будет написать что-нибудь, например, как это вместо:
var keyX, keyY, name;
for (name in x) { keyX = name; break; }
for (name in y) { keyY = name; break; }
See it in action.
По возрастанию какого? Ключ или ценность? – Jon
Свойства объекта не имеют определенного порядка. Вы должны использовать массив с числовыми индексами, если вам нужен определенный порядок. –
@ PetrČihula: Это объекты в массиве, но не свойства в объекте. – Jon