按字母顺序对 JSON(按特定元素)进行排序
Sorting JSON (by specific element) alphabetically
我有一些格式如下的JSON:
places =[
{
"city":"Los Angeles",
"country":"USA",
},
{
"city":"Boston",
"country":"USA",
},
{
"city":"Chicago",
"country":"USA",
},
]
等等。。。
我正在尝试按城市字母顺序对此进行排序,但无法做到这一点。我相信我问题的根源似乎是确定字符(相对于数字)的顺序。我尝试了一个简单的:
places.sort(function(a,b) {
return(a.city) - (b.customInfo.city);
});
然而,这个减法不知道该怎么办。有人可以帮助我吗?
不幸的是,
JavaScript 中没有通用的"compare"函数来为 sort() 返回合适的值。我会编写一个使用比较运算符的 compareString 函数,然后在排序函数中使用它。
function compareStrings(a, b) {
// Assuming you want case-insensitive comparison
a = a.toLowerCase();
b = b.toLowerCase();
return (a < b) ? -1 : (a > b) ? 1 : 0;
}
places.sort(function(a, b) {
return compareStrings(a.city, b.city);
})
Matti 的解决方案是正确的,但你可以写得更简单。您不需要额外的函数调用;您可以将逻辑直接放在sort
回调中。
对于不区分大小写的排序:
places.sort( function( a, b ) {
a = a.city.toLowerCase();
b = b.city.toLowerCase();
return a < b ? -1 : a > b ? 1 : 0;
});
对于区分大小写的排序:
places.sort( function( a, b ) {
return a.city < b.city ? -1 : a.city > b.city ? 1 : 0;
});
相关文章:
- 如何使用jquery对元素进行排序和定位
- 根据输入文本按元素排序,AngularJS
- 将元素排序到数组的顶部
- Scriptaculous排序表和句柄的问题(元素排序不正确)
- 如何使用jquery随机元素排序
- 是对集合中的所有元素排序,还是只对添加的元素排序
- 在case语句中对表元素排序时出现问题
- 类似于mason .js或同位素.js的打包布局,不按现有元素排序
- 如何根据子元素的值对父元素排序?
- 如何捕捉元素排序使用jQuery sortable
- Javascript:对数组的数组按每个内部数组中的第二个元素排序
- JS基于子元素对父元素排序
- 如何将Firebase子元素中的值与其他元素排序
- 工具提示在元素排序后停止工作
- 遍历元素以对其子元素排序
- 元素排序例程在Firefox中工作,但在Chrome中崩溃
- Javascript按数组中的元素排序
- JS:基于数据元素排序列表项
- 如何按三个元素排序
- JQ UI排序表:停止排序表内的一些元素排序