[英]Sort an array by string length within a function
我有一个问题,要我取一组单词,然后将它们从最小单词到最大单词的数组中返回。 这必须在函数中完成。 我有一个简单的形式,它返回我想要的结果:
//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"]);
我不是在寻找答案。 只是一些关于我做错了什么的建议。 谢谢你的帮助!
您可以尝试以下方法:
function sortByLength (array) {
return array.sort((x,y) => x.length - y.length);
}
看起来像这样吗? 如果为sortByLength输出设置一些变量,对吗?
在您的sortByLength
函数中,您未返回任何内容,因此未定义。 考虑将return
放在array.sort()
之前
是的,只要返回数组即可。 但是当排序对传递的数组进行排序时,最好使用.slice复制它。 归结为箭头功能:
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),
[]
);
是的,丑陋的东西起作用 ;)
您实际上并没有返回值,而只需要在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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.