У меня есть следующий объект, который я хотел бы сортируется:Сортировка значений в индексах объектов поддержания
Object {0: 1,
1: 2,
2: 1,
3: 2,
5: 2,
6: 1,
7: 2,
8: 1}
Это то, что я хотел бы, чтобы это стало:
Object {0: 1,
2: 1,
6: 1,
8: 1,
1: 2,
3: 1,
5: 2,
7: 1}
Индекс, который содержит самый низкий значение в нем должно быть первым экземпляром нового объекта, и оно должно содержать один и тот же индекс и значение. Я попытался использовать myObject.sort()
, но он не работает на объектах. Я также пробовал перебирать его, чтобы превратить его в массив, который нужно отсортировать, но когда я вызываю сортировку по результирующему массиву, он удаляет индекс.
for(indx in mainObject){
myNewObject[indx] = [];
$.each(myNewObject, function(index) {
myNewObject[indx].push(mainObject[index]);
});
}
Приведенный выше код выводит последний массив как:
0: 1
1: 2
2: 1
3: 2
4: undefined
5: 2
6: 1
7: 2
8: 1
Вызов метода сортировки на этом массиве производит это:
[1, 1, 1, 1, 2, 2, 2, 2, undefined]
Что отлично, но теперь индекс нет , Может ли кто-нибудь сказать мне, как это сделать, я часами царапаю голову, пытаясь понять это.
Отлично!Кажется, ты единственный, кто точно понял, что мне нужно. – Yamaha32088
Итак, вы не хотите сортировать объект, просто чтобы получить другое представление данных, которые можно сортировать? Гораздо проще решить проблему. –
Хотя этот вид стабилен, вы можете рассмотреть вариант [ответ от qw3n] (# 20366814) и отсортировать его с помощью 'return x.value -y.value || x.index - y.index', который также поместил бы индексы в числовом порядке для одного и того же значения. (Это может или не важно для вас, но, похоже, это то, что вы ищете.) –