Я пытаюсь отсортировать объекты по свойствам. У меня проблема с Opera и IE с моей функцией. До сих пор я отлаживал проблему в Opera на этом этапе:
- Откройте «Opera browser» и нажмите cntr + shift + i. Выберите консоль.
Передайте этот код в консоли и нажмите shift + enter.
var DataArray=["Other","Attitude","Attitude","Delivery/timings","General Performance","Personal Planning","Other"]
DataArray=DataArray.sort(function(a,b)
{
return a<b;
});
JSON.stringify(DataArray);
Вы должны получить правильный результат, подобный этому:
[«Персональное планирование», «Другое», «Другое», «Общая производительность», «Доставка / сроки», «Отношение», «Отношение»]
Теперь измените функцию сортировки следующим образом a> b и нажмите enter + shift, чтобы выполнить ее.
var DataArray=["Other","Attitude","Attitude","Delivery/timings","General Performance","Personal Planning","Other"]
DataArray=DataArray.sort(function(a,b)
{
return a>b;
});
JSON.stringify(DataArray);
Мой результат:
[«Отношение», «Доставка / сроки», «Отношение», «Общая производительность», «Другое», «Другое», «Персональное планирование»]
Обратите внимание на первое, второе и третье значение? Что происходит?
Если вы выполните это в консоли "Attitude" = "Attitude", она вернет true ...
Есть идеи?
Заранее спасибо.
EDIT:
И часть с IE:
КОД:
var DataArray=['Other','Attitude','Attitude','Delivery/timings','General Performance','Personal Planning','Other'];
DataArray=DataArray.sort(function(a,b)
{
return a<b;
});
prompt('',DataArray);
Результат (правильный): Личное планирование, Другое, Другое, Общая эффективность, Отношение, Отношение, Доставка / Сроки
КОД:
var DataArray = ['Other', 'Attitude', 'Attitude', 'Delivery / timeings', 'General Performance', 'Personal Planning', 'Other'];
DataArray=DataArray.sort(function(a,b)
{
return a>b;
});
prompt('',DataArray);
РЕЗУЛЬТАТ (неверно): Отношение, Отношение, Другое, Доставка / сроки, Общая производительность, Другое, Персональное планирование
РЕШЕНИЕ:
sortableArray=sortableArray.sort(function(a,b)
{
if(a.Category>b.Category)
{
return 1;
}
if(a.Category<b.Category)
{
return -1;
}
return 0;
});
Для сортировки данных по убыванию используйте функцию reverse ().
Спасибо за помощь. Особенно для @ nnnnnn