参见英文答案 >
How to sort an array of integers correctly17个
我有以下问题,我的函数接受一个包含4个数组的数组,每个元素都是一个数字.函数必须返回每个数组的最大元素.
我有以下问题,我的函数接受一个包含4个数组的数组,每个元素都是一个数字.函数必须返回每个数组的最大元素.
function largestOfFour(arr) { var largest = []; for (var i = 0; i < arr.length; i++) { largest.push(arr[i].sort().pop()); } console.log(largest); return largest; } largestOfFour([[4,5,1,3],[13,27,18,26],[32,35,37,39],[1000,1001,857,1]]);
结果:
Array [ 5,39,857 ]
显然它可以工作,但是当我尝试使用最后一个数组[1000,185,1]时,其中1000和1001大于857我得到857.为什么会发生?
解决方法
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
数组值按字符串排序.如果要按数字排序,请使用自定义比较器功能.
来自MDN文档:
var numberArray = [40,200]; function compareNumbers(a,b) { return a - b; } console.log('numberArray:',numberArray.join()); console.log('Sorted without a compare function:',numberArray.sort()); console.log('Sorted with compareNumbers:',numberArray.sort(compareNumbers));
输出:
numberArray: 40,200 Sorted without a compare function: 1,200,40,5 Sorted with compareNumbers: 1,200