我一直在尝试并尝试不同的方式在这个方框外思考,出于某种原因我无法得到它。
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;
我想我想弄明白:
1.为什么这是一个无限循环?
2.为什么我不能简单地传入i和n的循环值,然后比较它们以按长度排序?
我将非常感谢任何线索或帮助。谢谢!
答案 0 :(得分:1)
您实际上并不需要for-loop
。 i
和n
循环变量与排序函数使用的i
和n
参数不同,因此您有效地对数组进行排序{{ 1}}平方时间。
只需写下:
array.length
&#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"]