将一个数组排序为参数

时间:2017-10-07 04:09:39

标签: 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"]
&#13;
&#13;
&#13;

我想我想弄明白:
  1.为什么这是一个无限循环?   2.为什么我不能简单地传入i和n的循环值,然后比较它们以按长度排序?

我将非常感谢任何线索或帮助。谢谢!

2 个答案:

答案 0 :(得分:1)

您实际上并不需要for-loopin循环变量与排序函数使用的in参数不同,因此您有效地对数组进行排序{{ 1}}平方时间。

只需写下:

&#13;
&#13;
array.length
&#13;
&#13;
&#13;

答案 1 :(得分:0)

为什么要尝试对数组进行n ^ 2次排序?仅仅调用一次排序就足够了:

sortByLength = function (array){
 array.sort(function(i, n){return i.length - n.length;});
 return array;
}
sortByLength(["Hello", "Cheese", "Bye"]);

(3) ["Bye", "Hello", "Cheese"]