2013-03-03 89 views
1

考虑以下几点:如何使用JavaScript按字段的值对对象数组进行排序?

var array = [{"name":"zoe", "hotdogs":5},{"name":"april", "hotdogs":5},{"name":"ryan", "hot dogs":8}] 

我如何数组的元素按名称使用JavaScript进行排序?

var array = [{"name":"april", "hotdogs":5},{"name":"ryan", "hotdogs":8},{"name":"zoe", "hotdogs":5}] 

有没有办法应用一些函数来排序对象?有帮助性能的辅助库吗?

我试过如下:

array.sort(function(a, b) { 
    return a.name > b.name 
}); 

但它似乎已生成的数组没有影响时,我尝试任何打印出来。

+2

尝试'回报(a.name> b.name) - (b.name> a.name)'。 '.sort'将'0'(AKA'+ false')解释为“等于” – 2013-03-03 17:30:30

+0

@Jan,就是这样做的。 – Setsuna 2013-03-03 17:32:50

+0

@JanDvorak是正确的http://jsfiddle.net/avWXu/ – 2013-03-03 17:33:35

回答

1

使用.localeCompare()

array.sort(function(a, b) { 
    return a.name.localeCompare(b.name) 
}); 
+0

这是一个可怕的答案。从链接到的文档:*使用的语言环境和排序顺序完全取决于实现*。大。所以我在服务器上进行排序,并在每台用户的机器上进行排序。不用了,谢谢 – gman 2016-11-23 08:23:33

0

函数应该返回整数,像C STRCMP,这样做:

if a.name > b.name { 
    return 1; 
} else if (a.name == b.name) { 
    return 0; 
} 
return -1 
+0

'“zoe” - “四月”=> NaN' – 2013-03-03 17:32:43

相关问题