我有一个JSON,其格式如下:
account = [
{"name":"Los Angeles", "country":"USA"},
{"name":"Boston", "country":"USA"},
{"name":"", "country":"USA"},
{"name":"Chicago", "country":"USA"}
]
我试图按字母顺序按字母A-Z排序,最后使用空名称值。
我已经尝试过了,但是,这首先会以空值对A-Z进行排序。
account.sort( function( a, b ) {
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
});
最佳答案
account.sort( function( a, b ) {
if(a.name === "") {
return 1;
} else if(b.name === "") {
return -1;
} else {
return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
}
});
对于字符串,空字符串被认为是最小值,因此将其作为数组中的第一个元素进行排序。
但是,我们需要根据需求更改默认行为,因此我们必须为其添加额外的逻辑。
现在在排序中,当我们返回-1时,这意味着顺序是正确的,并且是所需的。当我们返回1时,这意味着顺序是相反的,需要交换,而当返回0时,两个对象/值都相同,并且不需要任何操作。
现在,在我们的情况下,我们需要将空字符串移到最后。因此,如果第一个对象/值是空字符串,则将其交换并将其向右移到数组中。并且当第二个对象/值是空字符串时,不需要执行任何操作,因为它必须最后执行。
因此,事情就是这样进行的。
关于javascript - 按字母顺序对JSON排序(最后为空值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30872373/