JavaScript箭头函数
let x = [1,2,3,4,5,6,7,8];
x.sort( (a,b) => b-a );
console.log(x);
实现逆序的原理是什么?
求大佬解惑
let x = [1,2,3,4,5,6,7,8];
x.sort( (a,b) => b-a );
console.log(x);
实现逆序的原理是什么?
求大佬解惑
首先,我们需要了解JavaScript中的箭头函数以及Array.prototype.sort()
方法。
JavaScript的箭头函数是一种简洁的函数语法,它没有自己的this
,arguments
,super
或new.target
。箭头函数中的this
值继承自包围它的非箭头函数。
Array.prototype.sort()
是一个数组方法,它对数组的元素进行排序并返回数组。默认情况下,此方法将数组元素转换为字符串,然后根据它们的字符序进行排序。
在你给出的代码中:
let x = [1,2,3,4,5,6,7,8];
x.sort( (a,b) => b-a );
console.log(x);
x.sort((a, b) => b - a) 是将数组
x进行升序排序,然后返回排序后的数组。
(a, b) => b - a是一个箭头函数,它接收两个参数
a和
b,并返回它们的差值。在排序函数中,如果返回的差值小于0,那么
a会被排在
b前面,实现升序;如果差值大于0,则
a被排在
b`后面,实现降序。
所以,对于你给出的数组 [1,2,3,4,5,6,7,8]
,排序后的结果应该是 [8,7,6,5,4,3,2,1]
。
这是因为箭头函数 (a, b) => b - a
的工作原理是:首先比较数组的第一个元素和第二个元素,如果第一个比第二个大,那么它们就交换位置。然后比较第二个和第三个元素,如果第二个比第三个大,那么它们也交换位置,以此类推。这样,最大的元素就会被放在数组的最后面。然后这个过程对剩下的元素重复进行,直到整个数组都排好序。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
这两篇文章有原理以及源码解读很清楚: