javascript - 将一个数组作为参数进行排序

标签 javascript arrays string function sorting

我一直在尝试不同的方式来跳出框框来思考这个问题,但由于某种原因我无法得到它。

         function sortByLength(array) {
           for(var i = 0; i < array.length; i++) {
             for(var n = 0; n < array.length; n++) {
               array.sort(function(i, n) {
                 return i.length - n.length;
               });
             }
           }
           return array;
        }
          
        console.log(sortByLength(["Hello", "Cheese", "Bye"]));
         
        //expecting ["Bye", "Hello", "Cheese"]

我想我正在尝试弄清楚:
1. 为什么会是无限循环?
2. 为什么我不能简单地传入 i 和 n 的循环值,然后比较它们以按长度排序?

如果我能得到任何线索或帮助,我将不胜感激。谢谢!

最佳答案

你实际上并不需要for循环in 循环变量与排序函数使用的 in 参数不同,因此您可以有效地对数组 array.length 平方次进行排序。

只需写:

function sortByLength(array){
    array.sort(function(i, n){
        return i.length - n.length;
        });
    return array;
}

console.log(sortByLength(["Hello", "Cheese", "Bye"]));

关于javascript - 将一个数组作为参数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46616594/

相关文章:

javascript - 为什么 Windows 只打开一次 `onload` 事件?

java - Java中有序数组的索引

c++ - 为什么 istream::operator>> 接受字符指针/数组?

mysql - 搜索长字符串的 SQL 性能

javascript - 如何在 React Native ListView 中过滤和呈现重复出现的嵌套 JSON 数据?

javascript - 如何从行尾(SVG)绘制动画?

java - 数组错误(java)

java - 如何从 Java 中的字符串修剪文件扩展名?

c - strcasecmp NULL 参数; man strcasecmp

javascript - 谷歌地图和 JavaFX : Display marker on the map after clicking JavaFX button