[英]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.