首页 > 试题广场 > 以下代码执行后,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]

8个回答

添加回答
推荐

答案: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 回复(11)
选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)
后面的排序决定sort,即减3绝对值越小的越靠前
发表于 2019-05-09 19:54:58 回复(0)
C
发表于 2019-05-08 21:47:12 回复(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
发表于 2017-08-02 14:37:24 回复(0)
array. sort(sortfunction),这里按照数值减三的绝对值大小排序。所以选C
发表于 2017-02-09 12:35:07 回复(0)