在CodingGame上有一道趣味题,有个存放数字的数组,数组中有正负数,要求输出最接近0的数字,我的思路是在数组中挨个取其绝对值,然后与0的差值比较大小,输出最小的那个数字。后面看到很好的解决办法,如下:
var arr=[23,-12,12,34,2,14,-8,22,-1];
arr.sort((a, b) => Math.abs(a) - Math.abs(b) || b - a);
说明
var arr=[23,-12,12,34,2,14,-8,22,-1];
console.log(arr.sort((a, b) => Math.abs(a) - Math.abs(b)));
输出结果:[-1, 2, -8, -12, 12, 14, 22, 23, 34]
var arr=[23,-12,12,34,2,14,-8,22,-1];
console.log(arr.sort((a, b) => Math.abs(a) - Math.abs(b) || b - a));
输出结果:[-1, 2, -8, 12, -12, 14, 22, 23, 34] //与上面结果的区别是绝对值相同的数,负数排在正数的后面
这一句代码包含的知识点很多,为了弄清楚,先掌握以下的内容:<