我正在用Javascript寫一個函數。基本上,如果數組的第一個元素中的字符串包含數組第二個元素中的所有字母,它應該返回true
。我輸入["hello","hey"]
如果我在函數中返回兩次,第二個覆蓋第一個函數嗎?
function mutation(arr) {
var string1 = arr[0].toLowerCase();
var array=[];
for (i=0;i<=string1.length-1;i++) {
array[i]=string1[i];
}
var string2 = arr[1].toLowerCase();
var result = true;
label:
for(i=0;i<string2.length;i++) {
if (array.indexOf(string2[i]) == -1) {
result = false;
break label;
}
else {
result = true;
}
}
return result;
}
這會給我正確的結果false
測試我的功能。但是,如果我以不同的方式編寫我的循環,那麼它會給我true
。
label:
for(i=0;i<string2.length;i++) {
if (array.indexOf(string2[i]) == -1) {
return false;
break label;
}
else {
return true;
}
}
我在第二種方法中做錯了什麼地方?
*「在哪裏我做錯了我的第二個方法是什麼?」 *只要你'從函數return',它終止。如果控制已經傳回給調用者,該循環如何能夠繼續運行? –
在循環的第一次迭代中,您檢查'array.indexOf('h')== -1',因爲'「你好」'含有''h''',所以'false'。因爲條件是'false',所以'else'分支在函數返回true的地方執行。同樣,'return' **終止**函數。 –
@JK感謝您的意見:) – 3x89g2