我有以下问题,我的函数接受一个包含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]]);
Run Code Online (Sandbox Code Playgroud)
结果:
Array [ 5, 27, 39, 857 ]
Run Code Online (Sandbox Code Playgroud)
显然它可以工作,但是当我尝试使用最后一个数组[1000,1001,185,1]时,其中1000和1001大于857我得到857.为什么会发生?
mea*_*gar 10
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
数组值按字符串排序.如果要按数字排序,请使用自定义比较器功能.
来自MDN文档:
var numberArray = [40, 1, 5, 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));
Run Code Online (Sandbox Code Playgroud)
输出:
numberArray:40,1,5,200
排序没有比较函数:1,200,40,5
用compareNumbers排序:1,5,40,200
| 归档时间: |
|
| 查看次数: |
379 次 |
| 最近记录: |