2014-10-09 4 views
0

Привет Я пытаюсь выяснить, как сортировать это. Ниже приведен образец моего массива.Сортировка объектов в массиве 2-го уровня

product_sort_arr = [ 
    [{name:'Particle'},link:value}], 
    [{name:'Bio-Part112',link:value}], 
    [], 
    etc . . . 
]; 

Надеюсь, вы сможете визуализировать образец.

До сих пор я пробовал использовать, и он все еще не работает. Все еще пытаюсь это исправить. Любая помощь будет большим

product_sort_arr.sort(function(a, b) { 
     return a.name - b.name; 
}) 

Ожидаемая доходность

product_sort_arr = [ 
    [{name:'Bio-Part112'},link:value}], 
    [{name:'Particle',link:value}], 
    [], 
    etc . . . 
]; 
+0

массив не симметричный. напишите exepected массив – diEcho

+0

Что вы ожидаете, когда выполняете математическую операцию (минус) на строках? На самом деле это NaN. Вам нужно что-то еще, с чем можно сравнить. Кроме того, в функции сортировки 'a' и' b' являются массивами, и у них нет 'name'. – Epsilon

+0

см. Http://stackoverflow.com/questions/6267329/how-to-sort-a-js-object-literal – diEcho

ответ

2

Я не уверен, что ваш массив должен быть, но теперь она определяется с некоторыми ошибками. Этот пример работает. Надеюсь, он переместит вас в правильном направлении.

var product_sort_arr = [ 
    [{name:'Particle', link:'value'}], 
    [{name:'Bio-Part112',link:'value'}], 
]; 

product_sort_arr.sort(function(a, b) { 
    if (a[0].name > b[0].name) { 
    return 1; 
    } 
    if (a[0].name < b[0].name) { 
    return -1; 
    } 
    return 0; 
}); 
    for (i=0;i<product_sort_arr.length;i++) { 
     console.log(product_sort_arr[i][0].name); 
} 

Проверить на JSFiddle

Обратите внимание, что массив представляет собой массив объектов, так что вы получите имя с product_sort_arr[0][0].name и product_sort_arr[1][0].name

+0

Завершил ответ с помощью Наомика. – Barry

+0

Работая сейчас, спасибо за помощь и другие заглядывания. Основной проблемой было сравнение струнных вещей. – Tony

0

ваш массив не является симметричным, я создал эту демонстрацию он будет сортировать массив на основе name

var p = [ 
    [{name:'Particle',link:'valueA'}], 
    [{name:'Bio-Part112',link:'valueB'}], 
]; 
console.log(p); 
p.sort(function(a,b) { 
    return a[0].name > b[0].name; 
}); 
console.log(p); 
Смежные вопросы