Oks*_*ana 3 javascript sorting
var arr = [5, 2, 1, -10, 8];
arr.sort(function(a, b) {
console.log(a,b)
return b - a;
}) ; // 8, 5, 2, 1, -10
Run Code Online (Sandbox Code Playgroud)
这个回调如何工作?
选择a和b的原则是什么?
请从内部解释这个特例.
输出console.log(首先,请解释此输出):
5 2
2 1
1 -10
-10 8
1 8
2 8
5 8
Run Code Online (Sandbox Code Playgroud)
Nin*_*olz 11
这取决于实施.这个实际的实现,看起来像一个插入排序,有这么多的数据(可能是不同的,比如Chrome,以及少于10个项目或更多项目的不同实现),从索引零到结束,如果是交换没有发生在最后两个项目,然后它停止,否则它倒退到索引零.
基本上它按此顺序进行测试和更改
5 2 1 -10 8 original order
5 2
2 1
1 -10
-10 8 swap
8 -10
1 8 swap
8 1
2 8 swap
8 2
5 8 swap
8 5 2 1 -10 result
Run Code Online (Sandbox Code Playgroud)
更复杂的排序可以更好地显示正在发生的事情,有两个更大的值,需要移动到数组的另一侧
8 9 1 2 3 4 original array
8 9
9 1 swap
1 9
8 1 swap
1 8
9 2 swap
2 9
8 2 swap
2 8
1 2
9 3 swap
3 9
8 3 swap
3 8
2 3
9 4 swap
4 9
8 4 swap
4 8
3 4
1 2 3 4 8 9 result
Run Code Online (Sandbox Code Playgroud)
实例,不适用于所有用户代理(例如,不在Edge中,但在Chrome中)
var array = [8, 9, 1, 2, 3, 4];
console.log(JSON.stringify(array));
array.sort(function (a, b) {
console.log(a , b, JSON.stringify(array));
return a - b;
});
console.log(JSON.stringify(array));Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }Run Code Online (Sandbox Code Playgroud)
.sort() 使用自定义函数必须返回数字,指示必须将女巫项目放在前面:
< 0 - 第一个元素必须放在第二个之前
0 - 两个元素相等,不改变顺序。
> 0 - 第二个元素必须放在第一个元素之前。
通常b - a表示降序排序,而a - b表示升序排序。
使用什么算法对元素进行排序取决于.sort. 检查它们的比较:
| 归档时间: |
|
| 查看次数: |
1167 次 |
| 最近记录: |