如何使用JavaScript按字段的值对对象数组进行排序?
问题描述:
考虑以下几点:如何使用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
});
但它似乎已生成的数组没有影响时,我尝试任何打印出来。
答
使用.localeCompare()
。
array.sort(function(a, b) {
return a.name.localeCompare(b.name)
});
+0
这是一个可怕的答案。从链接到的文档:*使用的语言环境和排序顺序完全取决于实现*。大。所以我在服务器上进行排序,并在每台用户的机器上进行排序。不用了,谢谢 – gman 2016-11-23 08:23:33
答
函数应该返回整数,像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
尝试'回报(a.name> b.name) - (b.name> a.name)'。 '.sort'将'0'(AKA'+ false')解释为“等于” – 2013-03-03 17:30:30
@Jan,就是这样做的。 – Setsuna 2013-03-03 17:32:50
@JanDvorak是正确的http://jsfiddle.net/avWXu/ – 2013-03-03 17:33:35