Why is 857 larger than 1000 and 1001? Javascript
本问题已经有最佳答案,请猛点这里访问。
我有以下问题,我的函数接受一个包含4个数组的数组,每个元素都是一个数字。函数必须返回每个数组的最大元素。
1 2 3 4 5 6 7 8 9 10 | 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]]); |
结果:
1 | Array [ 5, 27, 39, 857 ] |
号
显然它是有效的,但是当我尝试使用最后一个数组[1000,1001,857,1]时,其中1000和1001大于857,我得到857。为什么会这样?
developer.mozilla.org https:///EN /文档/网络/美国/全球_ JavaScript参考/ / /对象数组排序
值是字符串数组排序。如果你想使用一个自定义的排序号码,comparitor功能。
从MDN的文档:
1 2 3 4 5 6 7 8 9 | 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)); |
输出:
numberArray: 40,1,5,200
Sorted without a compare function: 1,200,40,5
Sorted with compareNumbers: 1,5,40,200
底线是:
这是一个一条简明的主题:http://developer.mozilla.org / EN /文档/网络/美国/全球_ JavaScript参考/ / /对象数组排序
试试这个:
1 | arr.sort(function(a, b){return a-b}).pop(); |
或只是
你使用
1 2 3 4 5 6 7 8 9 | function largestOfFour(array) { return array.map(function(arr) { return Math.max.apply(Math,arr); }); }); largestOfFour([[4,5,1,3],[13,27,18,26],[32,35,37,39],[1000,1001,857,1]]) => [5,27,39,1001] |
你可以在一个
1 | array.sort(function(a,b) { return a - b }) |
函数返回的