我有一个问题,希望我取一个单词数组,然后将它们从一个单词返回到最小单词。这必须在一个函数中完成。我有一个简单的形式,它返回我想要的结果:
//arr = ["Beg", "Life", "I", "To"]
//arr.sort(function(a, b){
// return a.length - b.length;
//});
但我需要将它放入一个函数中。以下是我到目前为止的部分内容:
function sortByLength (array) {
array.sort(function(a, b){
return a.length - b.length;
});
}
sortByLength(["Telescopes", "Glasses", "Eyes", "Monocles"]);
我不是在寻找答案。关于我做错了什么的一些建议。谢谢你的帮助!
答案 0 :(得分:2)
你可以试试这个:
function sortByLength (array) {
return array.sort((x,y) => x.length - y.length);
}
答案 1 :(得分:0)
看起来这样吗?如果你将一些变量设置为sortByLength输出是不是正确?
答案 2 :(得分:0)
在sortByLength
功能中,您没有返回任何内容,因此未定义。考虑在return
array.sort()
答案 3 :(得分:0)
是的,只需返回数组。但是,当排序对传递的数组进行排序时,最好使用 .slice 进行复制。归结为箭头func:
const sortByLength = arr => arr.slice().sort((a,b)=>a.length-b.length);
或者,如果你想用一个长度表更快(也许)这样做:
const sortByLength = arr =>
arr.reduce((table,s)=> (
(table[s.length] || (table[s.length] = [])).push(s), table),
[]
).reduce((result, tablerow) =>
result.concat(tablerow),
[]
);
是的,丑陋的事works;)
答案 4 :(得分:0)
您实际上并没有返回您的价值,只需在sortByLength
函数中包含一个return语句:
function sortByLength(array) {
return array.sort(function(a, b) {
return a.length - b.length;
});
}
console.log(sortByLength(["Telescopes", "Glasses", "Eyes", "Monocles"]));

修改:如果您不想修改原始数组,只需在函数中添加slice()
,它就会返回一个新数组:
function sortByLength(array) {
return array.slice().sort(function(a, b) {
return a.length - b.length;
});
}
var arrayOne = ["Telescopes", "Glasses", "Eyes", "Monocles"];
var arrayTwo = sortByLength(arrayOne);