首页 > 试题广场 >

以下代码执行后,array 的结果是?var arra...

[单选题]
以下代码执行后,array 的结果是?var array = [-1,1,3,4,6,10];
array.sort((a,b)=>Math.abs(a-3)-Math.abs(b-3));
  • [3, 4, 1, 6, -1, 10]
  • [-1, 1, 3, 4, 6, 10]
  • [10, 6, 4, 3, 1, -1]
  • [10, -1, 6, 1, 4, 3]
先把所有元素-3,求绝对值,然后从小到大排序,最后把这些元素替换为原来的就搞定了
原数组元素:-1  1  3   4  6  10
运算后:        4   2  0   1  3   7

排序:            0   1   2   3   4  7
替换:             3   4  1   6   -1  10
发表于 2019-09-26 15:14:12 回复(1)
先总结排序函数的作用:根据所有数在数轴上与3的距离进行升序排列
然后观察数组: [-1,1,3,4,6,10]
显而易见其中的3离3最近,肯定排在第一个
所以直接排除BCD选A
发表于 2019-08-23 22:44:35 回复(1)
arr.sort(function(a,b){
    return a-b;  //正序排序
}
它的内部采用冒泡算法,两数之差 > 0交换位置;<0不交换位置。
比如 Math.abs(-1-3)=4  > Math.abs(1-3)=2,-1与1交换位置;接着再用-1与3比较,直至所有数都比较完
发表于 2019-08-09 18:26:58 回复(0)
全部-3 求绝对值,然后重新排序
发表于 2019-08-23 18:59:19 回复(0)