2014-10-09 51 views
0

嗨我想弄清楚如何排序這個。以下是我的數組示例。排序在第二級陣列中的對象

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

數組不對稱。請寫出可執行數組 – diEcho 2014-10-09 06:01:06

+0

當您對字符串進行數學運算(減)時,您會期待什麼?其實它是NaN。你需要別的東西來比較。另外,在sort函數中,'a'和'b'是數組,並且它們沒有'name'。 – Epsilon 2014-10-09 06:07:34

+0

請參閱:http://stackoverflow.com/questions/6267329/how-to-sort-a-js-object-literal – diEcho 2014-10-09 06:21:37

回答

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].nameproduct_sort_arr[1][0].name

+0

用Naomik的輸入完成了答案。 – Barry 2014-10-09 06:20:58

+0

現在工作,感謝您的幫助和其他窺視。主要的問題是比較字符串的事情。 – Tony 2014-10-09 06:31:40

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);