Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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
Javascript Chrome数组。按顺序排列数字_Javascript_Arrays_Google Chrome_Sorting - Fatal编程技术网

Javascript Chrome数组。按顺序排列数字

Javascript Chrome数组。按顺序排列数字,javascript,arrays,google-chrome,sorting,Javascript,Arrays,Google Chrome,Sorting,我试图对div数组进行排序,这样如果a在b的下方或左侧,a在b之前 在CodePen中使用了几个小时后,我意识到,如果一个数组的长度为10个或更多项,Chrome将按顺序对这些项进行排序,至少使用这个比较功能: var array = [0,1,2,3,4,5,6,7,8,9,10]; array.sort(function(a, b) { return -1; }); Chrome返回: [0, 2, 3, 4, 1, 6, 7, 8, 9, 10, 5] 如果在sort

我试图对div数组进行排序,这样如果
a
b
的下方或左侧,
a
b
之前

在CodePen中使用了几个小时后,我意识到,如果一个数组的长度为10个或更多项,Chrome将按顺序对这些项进行排序,至少使用这个比较功能:

var array = [0,1,2,3,4,5,6,7,8,9,10];
array.sort(function(a, b) {
        return -1;
});
Chrome返回:

[0, 2, 3, 4, 1, 6, 7, 8, 9, 10, 5]

如果在sort函数中记录a和b,那么发生这种情况的原因就显而易见了——这只是Chrome使用的算法。我知道人们使用返回a-b等。。。但是让我们转到下面的函数。。。数组由包含div的jQuery对象组成。如果a在b的下面或左边,我希望a在b之前。有什么帮助吗

编辑:为了响应这里的一些回答,我重写了函数以输出
1
-1
,或
0
。尽管如此,我还是得到了不想要的结果。查看如何在输出中,第一个对象的
right
属性大于第二个对象的
left
属性,并且第一个对象的
top
属性低于第二个对象的
bottom
。根据比较函数,它们的顺序应该相反

var数组=[
{
底部:1181.8854675292969,
左:23.39583396911621,
右图:72.39583396911621,
顶部:910.8854675292969,
},
{
底部:1181.3750305175781,
左:78.395835876484,
右图:183.395835876484,
顶部:1132.3750305175781
},
{
底部:1182.60421752969,
左:189.3958435058938,
右图:349.3958435058594,
顶部:1021.60421752969
},
{
底部:1181.3750305175781,
左:355.3958435058594,
右图:626.3958435058594,
顶部:1132.3750305175781
},
{
底图:1133.22921752969,
左:355.3958435058594,
右图:632.3958435058594,
顶部:1132.22921752969
},
{
底部:1127.0208435058594,
左:78.395835876484,
右图:183.395835876484,
顶部:1022.0208435058594
},
{
底部:1127.0208435058594,
左:355.3958435058594,
右图:460.3958435058594,
顶部:1022.0208435058594
},
{
底部:1127.0208435058594,
左:466.3958435058594,
右图:571.3958435058594,
顶部:1022.0208435058594,
},
{
底部:1016.0208435058594,
左:78.395835876484,
右图:183.395835876484,
顶部:911.0208435058594
},
{
底部:1016.2395935058594,
左:189.3958435058938,
右图:515.3958435058594,
顶部:800.2395935058594
},
{
底部:1016.2395935058594,
左:521.3958740234375,
右图:626.3958740234375,
顶部:800.2395935058594
},  
{
底部:906.0208435058594,
左:23.39583396911621,
右图:183.3958339691162,
顶部:801.0208435058594
},
{
底部:794.6041870017188,
左:23.39583396911621,
右图:72.39583396911621,
顶部:634.6041870017188
},
{
底部:795.0208435058594,
左:78.395835876484,
右图:183.395835876484,
顶部:690.0208435058594
},
{
底部:794.0208435058594,
左:189.3958435058938,
右:404.3958435058594,
顶部:689.0208435058594
},
{
底部:794.0208435058594,
左:410.3958435058594,
右图:515.3958435058594,
顶部:689.0208435058594
},
{
底部:794.0208435058594,
左:521.3958740234375,
右图:626.3958740234375,
顶部:689.0208435058594
},
{
底部:683.3750152587891,
左:78.395835876484,
右图:183.395835876484,
顶部:634.3750152587891
},
{
底部:684.6041870017188,
左:189.3958435058938,
右图:349.3958435058594,
顶部:523.6041870017188
},
{
底部:684.6041870017188,
左:355.3958435058594,
右图:570.3958435058594,
顶部:523.6041870017188
},
{
底部:629.0208435058594,
左:23.39583396911621,
右图:183.3958339691162,
顶部:524.0208435058594
},
{
底部:518.2395935058594,
左:23.39583396911621,
右:128.3958339691162,
顶部:302.2395935058594
},
{
底部:517.8854217529297,
左:134.3958435058938,
右图:405.3958435058594,
顶部:246.8854217529297
},
{
底部:518.604175567627,
左:411.3958435058594,
右图:626.3958435058594,
顶部:357.60417556762695
}
];
array.sort(函数(a,b){
如果(a.底部b.右侧)
返回1;
如果(a.bottom>b.top | | a.leftlog(数组[4],数组[8])比较函数必须返回:

  • 否定:当第一个元素出现在第二个元素之前时
  • 零:当元素之间的顺序无关紧要时
  • 正:当第二个元素在第一个元素之前时
始终返回-1会导致随机结果


恐怕您不可能完成您正在尝试执行的操作,因为比较函数必须通过数组中的所有元素保持一致。使用比较函数时,可能会出现
f(a,b)=-1
f(b,a)=-1
,这是不一致的:要么
a
要么
b
应该放在第一位。

比较函数必须返回:

  • 否定:当第一个元素出现在第二个元素之前时
  • 零:当元素之间的顺序无关紧要时
  • 正:当第二个元素在第一个元素之前时
始终返回-1会导致随机结果

恐怕您不可能完成您正在尝试执行的操作,因为比较函数必须通过数组中的所有元素保持一致。使用您正在使用的比较功能,可能会出现
f(a,b)=-1
f(b,a)=-1
,这是不一致的:要么
a
要么
b
应该放在第一位。

编辑

你原来的问题似乎过于简化了。以下是最新的答案:

如果a在b的下面或左边,我希望a在b之前。有什么帮助吗

那么
a.bottom < b.top || a.left > b.right ? 1 : -1