var city = [{
"city":"London"
},{
"city":"Wales"
}
,{
"city":"Atom"
}
,{
"city":"Bacelona"
}];
city.sort(function(a,b){
return a.city - b.city;
})
console.log(city)
不确定上述代码有什么问题,为什么它不排序?我的逻辑很好。
答案 0 :(得分:2)
返回字符串函数:
return a.city.localeCompare(b.city);
var city = [{ "city": "London" }, { "city": "Wales" }, { "city": "Atom" }, { "city": "Bacelona" }];
city.sort(function (a, b) {
return a.city.localeCompare(b.city);
});
document.write('<pre>' + JSON.stringify(city, 0, 4) + '</pre>');
&#13;
答案 1 :(得分:2)
您不能在字符串上使用-
运算符,它们仅用于数字。您需要使用<
,>
,<=
或>=
作为词汇顺序。
当你处理非英语单词时,Nina Scholz的答案非常有用,它适用于英语单词。
只需将-
更改为>
即可使代码正常工作:
var city = [{
"city": "London"
}, {
"city": "Wales"
}, {
"city": "Atom"
}, {
"city": "Bacelona"
}];
city.sort(function(a,b){
return (a.city > b.city ? 1 : (a.city === b.city ? 0 : -1));
});
console.log(city);