javascript - 按整数大小对嵌套数组进行排序

标签 javascript arrays sorting

谷歌搜索我发现这个函数可以很容易地按整数大小对数组进行排序,并在 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

由于 arr 中不存在名为 lenght 的属性,因此返回 undefined

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

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

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

这是因为,当一个数字和另一个对象进行比较时,两者都会被转换为数字,而 undefined 转换为数字时将返回 NaNNaN 将等于 NOTHING(甚至不等于它本身)。

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

所以 largestOfFour 中的循环永远不会执行,排序函数也是如此。这就是为什么您的数组根本没有排序的原因。

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

相关文章:

C++ : recognizing lower case as correct when its stored as upper case?

algorithm - 并行排序算法的好选择来实现作为家庭作业?

javascript - 无法在 HTTPs 上使用 Chrome 加载响应数据

javascript - 在 foreach 循环中为每个具有 ID 的元素添加类

java - 在Java中通过txt文件创建对象到数组中

c++ - 按长度(单词)对字符串数组进行排序 C++

java - 如何使用 java 8 lambda 和流对 Map<YearMonth, List<LocalDate>> 进行排序

javascript - 我无法使 autoCapitalize 正常工作

javascript - 使用 Javascript/JQuery 将 div 移动到另一个 div 之上?

java - 如果 1+ 个实例具有相同(最小)值,如何从确定最小值的循环中随机选择一个对象?