簡體   English   中英

返回帶有參數傳遞的length屬性的數組

[英]Return an array with the length property of arguments passes

目前陷入這一挑戰。

// stringLengths takes in four strings
// it returns an array containing the length of each string
// Example: stringLengths('mushroom', 'onion', '', 'garlic') returns [8, 5, 0, 6] 

function stringLengths(str1, str2, str3, str4) {

}

擁有

function stringLengths(str1, str2, str3, str4) {
    var arr = [];
    for (var i = 1; i < arguments.length; i++) {
        arr.push(arguments[i].length);
    }

    return arr;
}

這給了我一個空數組。

如何將每個參數的length屬性推入Array並返回帶有每個參數長度的數組?

您可以使用ES6的...Array.map 因此,您將處理任意數量的字符串。

 function stringLengths(...args) { return args.map(x => x.length); } console.log(stringLengths( 'str1', 'je suis un chocolat', 'les croissants sont bons', )); 


更簡潔

 const stringLengths = (...args) => args.map(x => x.length); console.log(stringLengths( 'str1', 'je suis un chocolat', 'les croissants sont bons', )); 

如果只需要長度數組:

function stringLengths(str1, str2, str3, str4) {
  return Array.from(arguments).map((x) => x.length);
}

應該做的把戲

您的代碼工作正常,除了您從1開始而不是從索引0 數組具有從零開始的索引,因此,當我僅傳遞1個參數時,由於循環根本沒有執行,因此會得到初始的空數組。

 function stringLengths(str1, str2, str3, str4) { var arr = []; for (var i = 0; i < arguments.length; i++) { arr.push(arguments[i].length); } return arr; } var x = stringLengths('123', '123456789', '12345'); console.log(x); 

有關在此處訪問數組元素的更多詳細信息

您的代碼工作正常。 如果您想要所有參數長度,則只需要從i = 0而不是1開始循環。

 function stringLengths(str1, str2, str3, str4) { var arr = []; for (var i = 0; i < arguments.length; i++) { arr.push(arguments[i].length); } return arr; } console.log(stringLengths("hello", "okay", "doh")); 

使用隱式對象arguments您可以獲得鍵,如果傳遞的對象沒有該attr,請檢查attr length

 const stringLengths = function() { return Object.keys(arguments).map(k => arguments[k].length || 0); } console.log(stringLengths('ele', 'from', 'stackoverflow', 2222)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM