Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 当数组中的对象太多时,ES6中的sort()会以错误的方式对项目进行排序_Sorting_Ecmascript 6 - Fatal编程技术网

Sorting 当数组中的对象太多时,ES6中的sort()会以错误的方式对项目进行排序

Sorting 当数组中的对象太多时,ES6中的sort()会以错误的方式对项目进行排序,sorting,ecmascript-6,Sorting,Ecmascript 6,这是一个包含8个对象的示例数组。现在,我想按升序对它们进行排序。我在控制台中得到了完美的结果 const array = [{"lead_location":"a"},{"lead_location":"rta"}, {"lead_location":"van"},{"lead_location":"svan"}, {"lead_location":"avan"},{"lead_location":"yvan"},

这是一个包含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
我很困惑,为什么改变数组的大小会显示不同的结果?任何人都能发现我的错误吗?

让sort=array.sort((a,b)=>{
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
})
如果(a.潜在客户位置>b.潜在客户位置)返回1; 如果(a.潜在客户位置
不能为结果返回true/false。您必须指定顺序。这应该是升序。如果不是,则交换-1和1。0表示两者相等。

让sort=array.sort((a,b)=>{
如果(a.潜在客户位置>b.潜在客户位置)返回1;
如果(a.潜在客户位置

不能为结果返回true/false。您必须指定顺序。这应该是升序。如果不是,则交换-1和1。0表示两者相等。

您的比较函数不符合比较函数的要求。返回值必须是一个数字,负零或正。可能重复@RaymondChen,感谢您的解释。您的比较函数不符合比较函数的要求。返回值必须是一个数字,可以是负零,也可以是正。可能是@RaymondChen的重复,谢谢你的解释