这是一个包含8个对象的示例数组。现在,我想按升序对它们进行排序。我在控制台中完美地得到了结果。
const array =
[{"lead_location":"a"},{"lead_location":"rta"},
{"lead_location":"van"},{"lead_location":"svan"},
{"lead_location":"avan"},{"lead_location":"yvan"},
{"lead_location":"ab"},{"lead_location":"rta"}];
var sort = array.sort((a, b) => (a.lead_location) > (b.lead_location));
console.log(sort); // this array is sorted perfectly
但是,如果我在数组中添加更多对象(在下一个示例中为13),则数组排序不好。我使用与上面相同的排序方法。第二个数组如下所示:
const array =
[{"lead_location":"a"},{"lead_location":"rta"},
{"lead_location":"van"},{"lead_location":"svan"},
{"lead_location":"avan"},{"lead_location":"yvan"},
{"lead_location":"a"},{"lead_location":"rta"},
{"lead_location":"van"},{"lead_location":"svan"},
{"lead_location":"avan"},{"lead_location":"ab"},
{"lead_location":"rta"}];
var sort = array.sort((a, b) => (a.lead_location) > (b.lead_location));
console.log(sort); // this array is not sorted well
我很困惑,怎么改变数组的大小会显示不同的结果?任何人都可以发现我的错误?
答案 0 :(得分:4)
let sort = array.sort((a,b) => {
if(a.lead_location > b.lead_location) return 1;
if(a.lead_location < b.lead_location) return -1;
return 0
})
您无法为结果返回true / false。您必须指定订单。这应该是升序。如果不交换-1和1. 0表示两者相等。