首页 > 试题广场 > 以下代码执行后,array的结果是?
[单选题]
以下代码执行后,array的结果是?
var array=[-1,1,3,4,6,10]; 
array.sort((a,b)=>Math.abs(a-3)-Math.abs(b-3));
  • [10,-1,6,1,4,3]
  • [10,6,4,3,1,-1]
  • [3,4,1,6,-1,10]
  • [-1,1,3,4,6,10]
推荐

答案:C
解析:
array. sort(sortFunction)是按照sortFunction结果大小排序。

一言不合先把比较的对象定义在数组上方,再手工分析

class Untitled {
    public static void main(String[] args) {
    //4 2 0 1 3 7
    var array=[-1,1,3,4,6,10]; 
    array.sort((a,b)=>Math.abs(a-3)-Math.abs(b-3));        System.out.println(array);

    }
}

发现最小的是算好后的第三个数字,对应原数组原位置上面是,3。
看看选项中只有一个是以3排在前面的数组。
好了,后面的不用比了。
就是C。

编辑于 2019-04-26 14:26:31 回复(12)
选C。
sort() 方法用于对数组的元素进行排序,参数决定排序的顺序。
  • 原数组var array=[-1,1,3,4,6,10];
  • 参数(a,b)=>Math.abs(a-3)-Math.abs(b-3):即数值减3的绝对值[4,2,0,1,3,7]作为参数决定排序。
  • 根据绝对值减3大小排列[0,1,2,3,4,7],对应的原数组排序后为[3,4,1,6,-1,10]

编辑于 2019-04-25 22:24:23 回复(0)
答案:C
1. 排序从小到大。
2.然后算出绝对值[-1,1,3,4,6,10]  => [4 2 0 1 3 7]
发表于 2019-04-25 16:57:49 回复(0)
数值减三的绝对值越小,位置越靠前
发表于 2019-04-20 20:11:35 回复(0)
选C;
(a,b)=>Math.abs(a-3)-Math.abs(b-3);
箭头函数表示:当Math.abs(a-3)>Math.abs(b-3)时,a放在b后面,Math.abs(a-3)<Math.abs(b-3)时,不交换位置,也就是说数组中的每一项减去3的绝对值越大越靠后。这里主要考的是对sort()方法的掌握。
发表于 2019-08-16 09:53:04 回复(1)
array. sort(sortfunction),这里按照数值减三的绝对值大小排序。所以选C
发表于 2017-02-09 12:35:07 回复(1)
C
发表于 2019-05-08 21:47:12 回复(0)
这个Array.prototype.sort里面传入函数,对于函数(a,b)返回值是大于0,还是小于0决定参数的前后,两者总是记错,现在记录一下,返回值大于0,调换顺序,小于等于0顺序不动。
发表于 2019-10-25 18:01:10 回复(0)
Sort是从小到大排序,在执行绝对值计算后应该是开头是3结尾是10,a是降序
发表于 2019-08-03 18:30:06 回复(0)
1,对于 sort() 方法来说,要想函数的第一个参数排在前面,则返回负值
2,Math.abs(a-3) a是与3的绝对值
因此排序结果就是与3的绝对值从小到大排序
发表于 2019-07-24 17:35:36 回复(1)
a-b>0,则变换位置 a-b<=0,则位置不变
发表于 2019-06-20 13:10:57 回复(0)
后面的排序决定sort,即减3绝对值越小的越靠前
发表于 2019-05-09 19:54:58 回复(0)
c
发表于 2017-08-02 14:37:24 回复(0)