我需要編寫一個函數來檢索傳遞給函數的最後一個參數。如果它只是參數,它應該返回最後一個元素。如果它是一個字符串,它應該返回最後一個字符。數組應該返回數組的最後一個元素。我的代碼適用於數組,字符串和參數,只要它們不是全部字符串。個別字符在javascript參數中被視爲字符串
function last(list){
var arr;
if(list instanceof Array){
return list[list.length-1];
}
if(typeof list === 'string' || list instanceof String){
arr = list.split("");
return arr[arr.length-1];
}
return arguments[arguments.length-1];
}
這適用於幾乎所有情況,但我有一個問題,當輸入是一堆字符串參數。
Test.assertEquals(last('a','b','c','z'), 'z');
返回「A」
爲什麼不相交的字符串進行測試時,如果參數數組或字符串,我怎麼能universaly訪問任意參數的最後一個值評估爲真?
這不是一個可接受的解決辦法。該函數需要能夠接受數組,字符串和參數。提供的測試用例是Test.assertEquals(last(1,「b」,3,「d」,5),5);和我的代碼工作,因爲它下降到最後一個返回語句,但不相交的字符被讀爲一個字符串,它進入第二個if語句。 – user137717