为什么857大于1000和1001?使用Javascript

L. *_*San 6 javascript arrays

我有以下问题,我的函数接受一个包含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