为什么857大于1000和1001? Javascript

前端之家收集整理的这篇文章主要介绍了为什么857大于1000和1001? Javascript前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > How to sort an array of integers correctly17个
我有以下问题,我的函数接受一个包含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

原文链接:https://www.f2er.com/js/155572.html

猜你在找的JavaScript相关文章