我需要对一个数组进行排序,但它只能在 Chrome 中正常工作。在 Mozilla 规范中我找到了这个文本,但仍然无法解决这个问题:
“这个数组的元素是排序的。排序不一定是稳定的(也就是说,比较相等的元素不一定保持原来的顺序)。如果 comparefn 不是未定义的,它应该是一个接受两个参数 x 和如果 x < y,则返回负值,如果 x = y,则返回零,如果 x > y,则返回正值。"
这个链接https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort 可能会帮助你和我
这是我的代码
arr.sort(sortTrip);
function sortTrip(a, b) {
if (a.to != b.from) return 1;
if (a.to == b.from) return -1;
}
这是arr
:
var arr = [
{
"from": "Moscow",
"to": "Rome",
"transport": "NSB Regiontog Train",
"seat": "25"
},
{
"from": "Oslo",
"to": "Paris",
"transport": "NSB Regiontog Train",
"seat": "25"
},
{
"from": "Helsinki",
"to": "Tokio",
"transport": "NSB Regiontog Train",
"seat": "25"
},
{
"from": "Tokio",
"to": "Moscow",
"transport": "NSB Regiontog Train",
"seat": "25"
},
{
"from": "Paris",
"to": "New-York",
"transport": "NSB Regiontog Train",
"seat": "25"
},
{
"from": "Rome",
"to": "Oslo",
"transport": "NSB Regiontog Train",
"seat": "25"
}
]
结果必须是
- 赫尔辛基 - 东京
- 东京 - 莫斯科
- 莫斯科 - 罗马
- 罗马 - 奥斯陆
- 奥斯陆 - 巴黎
- 巴黎 - 纽约