2014-10-09 47 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);