我試圖解決以下問題,沒有任何功能編程。如果元素的長度相同,如何找到第一個實例?
問題:編寫一個叫做findShortestWordAmongMixedElements()
的函數。
給定一個數組,findShortestWordAmongMixedElements()
返回給定數組中的最短字符串。
注:
如果有關係,它應該返回的第一個元素出現在給定數組英寸
期望給定數組的值不是字符串。
如果給定的數組是空的,它應該返回一個空字符串。
如果給定的數組不包含字符串,它應該返回一個空字符串。
var output = findShortestWordAmongMixedElements([4, 'two', 2, 'three']); console.log(output); // --> 'two'
這就是我的答案至今:
function findShortestWordAmongMixedElements(arr) {
// your code here
var shortestString = '';
if (arr.length > 0) {
for (var i = 0; i < arr.length; i += 1) {
if (typeof arr[i] === 'string') {
var length = arr[i].length;
if (arr[i].length < shortestString.length) {
shortestString = arr[i];
} else {
shortestString = arr[length.indexOf(arr[i].length)];
}
}
}
}
return shortestString;
}
也許我應該做這樣說:
function findShortestWordAmongMixedElements(arr) {
// your code here
var shortestString = '';
if (arr.length > 0) {
for (var i = 0; i < arr.length; i += 1) {
if (typeof arr[i] === 'string') {
var length = arr[i].length;
if (arr[i].length < shortestString.length) {
shortestString = arr[i];
}
if (arr[i].length === shortestString.length) {
shortestString = arr[length.indexOf(arr[i].length)];
}
}
}
}
return shortestString;
}
沒有在第2個功能打印出來。我的indexOf
不正確?
你遇到了什麼問題? –
'如果有關係,它應該返回出現在給定數組中的第一個元素'。因此,比較字符串時,如果比較字符串的長度較短,則只替換當前字符串。如果是平局,不要做交換。我看不出混亂在哪裏。如果您發佈的代碼存在問題,請解釋問題並提出問題。 – csmckelvey
'else'子句看起來確實可疑。嘗試添加一個布爾變量「找到字符串」。你正在嘗試使用'shortestString'作爲最短字符串的值和表示在數組中遇到字符串的布爾值。 – traktor53