2016-12-15 185 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