2017-02-22 32 views
0

Я хочу рисовать объекты один за другим, отсортированные по значению y, поэтому объекты, которые являются «ближе», не будут рисоваться за объектами с более низким значением y. У меня есть массив вроде этого:Javascript. Сортировка массива объектов по свойству x

List.list = [ 
'idofobject' : { 
    x: 20, 
    y: 28 
}, 
'otheridofobject' : { 
    x: 20, 
    y: 23 
}, 

]; 

Как я могу сортировать его по объекту y? Я попытался отсортировать его как обычный массив объектов, но в этом случае у меня есть идентификатор объекта перед свойствами, поэтому он не был возможен. Как я могу сделать это без удаления id объекта?

+0

Ваш List.list неверен, но это ответ, что вы хотите: HTTP: // StackOverflow .com/questions/1129216/sort-array-of-objects-by-string-property-value-in-javascript –

+0

Массивы не могут иметь ключи. Ваш список является синтаксической ошибкой. –

+0

Хммм, но он работает хорошо. Я просто не могу его сортировать:/ – Stonoga

ответ

2

Вы можете использовать функцию Array.Prototype.sort следующим образом:

List.list.sort(function(a, b) { 
    return a.y - b.y; 
}); 

Это будет сортировать, используя пользовательскую функцию.

Посмотрите на the documentation, если вам нужна дополнительная информация.

2

На одной линии

list.sort((obj1, obj2) => obj1.y - obj2.y); 
-1

Вы можете использовать, если вы хотите подчеркнуть

http://underscorejs.org/#sortBy

+0

ссылки только ответы имеют очень мало значения. Предоставьте соответствующий код на основе ссылки и используйте только ссылку для поддержки того, что на самом деле находится в ответе – charlietfl

+0

Хорошо, я думаю, что код в ссылке более понятен. Но я ценю ваш комментарий. –