谷歌搜索我发现此函数可以轻松地按整数大小对数组进行排序,并在jsfiddle中对其进行了测试,按预期工作(控制台日志140000、104、99)。

function sortNumber(a,b) {
    return b - a;
}

var numArray = [104, 99, 140000];
numArray.sort(sortNumber);
console.log(numArray);


因此,我尝试在freeCodeCamp exericse的解决方案中实现它,但某种程度上无法使其正常工作。唯一的区别是,现在我有一个嵌套数组要处理。所以我想循环通过嵌套在arr元素中的所有数组(例如largetsOfFour),并按大小对数组内的整数进行排序。谁能指出我做错了什么?

function largestOfFour(arr) {
  for(var x=0; x<arr.lenght; x++) {
    arr[x] = arr[x].sort(function(a,b) { return b - a; });
  }
  return arr;
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

最佳答案

有一个错字。应该是arr.length,而不是arr.lenght

由于在lenght中不存在称为arr的此类属性,因此它将返回undefined

console.log([].lenght);
// undefined


undefined不能与数字进行比较。因此,与x的初始值比较时,零将返回false

console.log(0 < undefined);
// false


这是因为,当将一个数字和另一个对象进行比较时,它们都将被转换为数字,而当转换为数字时,它们将返回undefined,并且NaN等于NOTHING(甚至不等于自身) 。

console.log(+undefined);
// NaN
console.log(NaN === NaN);
// false


因此,NaN中的循环永远不会执行,排序功能也不会执行。这就是为什么数组根本不排序的原因。

关于javascript - 按整数大小排序嵌套数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34022713/

10-12 00:17
查看更多