2015-04-01 2 views
0

Я хочу, чтобы отсортировать массив, в соответствии со свойством таких, как это:Сортировка JSON в массив

[ 
{num:5},{num:3},{num:6},{num:9} 
] 

После сортировки, я хочу, чтобы получить

[ 
{num:3},{num:5},{num:6},{num:9} 
] 

Как это сделать в JavaScript?

+2

Что вы уже пробовали? есть так много вопросов, как этот! : P – briosheje

+0

@briosheje Я раньше не делал такого рода. Понятия не имею. :( – Bubble

+0

Вы можете использовать .sort, .filter или .map, ваш выбор!: P – briosheje

ответ

7

Функция сортировки (литерал) возвращает 1, -1, 0 для восходящего, нисходящего и равного соответственно.

array.sort(function(a, b) { 
     return a.num - b.num 
}); 
6

the_array.sort(function(a,b) { return a.num-b.num });

где функция внутри вида() является Компаратор

3

var arr = [ 
 
    {num:5},{num:3},{num:6},{num:9} 
 
]; 
 

 
arr.sort(function(a,b) { return a.num-b.num; }); 
 

 
document.write(JSON.stringify(arr));

Если вам нужно будет сортировать элементы в обратном направлении было бы b.num-a.num.

+0

Я изменил 'console.log' на' document.write', а также добавил 'JSON.stringify()', чтобы сделать ваш фрагмент более полезным :) – nicael

+0

Спасибо @nicael! –

2

В этом случае вы должны научиться использовать лямбда-выражение, которое является ключом к функциональному программированию. Ответ довольно прост:

arr.sort(function(a,b){ 
    return a.num - b.num; 
}) 

Если вы не знаете функцию высокого порядка или лямбда, вы на самом деле не написали код JavaScript.

+0

Уже три одинаковых ответа. – nicael

+0

@nicael На самом деле, пока я не редактирую этот пост, ответов нет. – Mike

+1

Есть три ответа *, которые были опубликованы до вашего, и они полностью идентичны *. Твоя, поверь мне, избыток. – nicael

Смежные вопросы