2016-12-15 181 views
-1

我做了一個數組,並且當我用'for'循環去檢查數組是否真的輸入時,如果給定的輸入確實在數組內。我得到它的工作的地步,因爲它找到真正的價值,並提醒真實,但是它提醒每一個其他入境陣列內假。jQuery循環獲取數據

$(function(){ 


$('button').on('click', function() { 
    var name = $('#name').val() 


    // Users 
    var pers = ['John', 'Apples', 'Emily', 'Banana', 'Chris', 'Orange']; 


for (var i in pers) { 
    if(pers[i] == name) { 
     $('body').append('<h3> You like ' + pers[++i] + '!'); 
    } else { 
     alert('false'); 
    } // IF 
    } // Loop 
    }); // Button 
}); // Function 
+1

嗯,是的。它會做到這一點。你能完全刪除那個'else'塊嗎? – David

+0

酷,所以,你有代碼做你所說的那樣.. –

+0

作爲一個旁觀 - 你不應該真的使用'for..in'循環遍歷數組。使用'array.forEach'或'for..of'或'for(var i = 0; i Punit

回答

0

每個初學者似乎都會犯這個錯誤。直到完成循環,才能知道該元素未找到。對於每個不匹配的商品,即使前後有匹配,您都會提醒false。您需要在找到匹配項時設置標誌,然後在循環結束時檢查標誌是否設置。

您不應該爲此使用數組,您應該使用一個對象來實現映射。

var pers = { John: 'Apples', Emily: 'Banana', Chris: 'Orange' }; 
if (pers.hasOwnProperty(name)) { 
    $('body').append('<h3> You like ' + pers[name] + '!'); 
} else { 
    alert("false"); 
} 
+0

好吧,它的作品,不知道它是如何工作的,但它確實如此。然而,現在追加名稱並不是水果,因爲水果是++名稱,沒有i循環,我真的不知道如何解決這個問題。 – Unkn0wn

+0

我沒有意識到這是它在做什麼。你不應該使用數組,你應該使用一個將名字映射到水果的對象。 '約翰:'蘋果',艾米莉:'香蕉',克里斯:'橙'}' – Barmar