2013-03-01 51 views
0

我想确定一个对象是否包含一个特定的值,以便我可以肯定不追加我正在寻找的值不止一次,并防止递归。查找是否存在与jQuery的JavaScript对象的值

我已经试过很多方法,但不能得到任何他们的工作:

data = [ 
    {val:'xxx',txt:'yyy'}, 
    {val:'yyy',txt:'aaa'}, 
    {val:'bbb',txt:'ccc'} 
]; 

console.log(jQuery.grep(data, function(obj){ 
    return obj.txt === "ccc"; 
})); 
$.map(data, function(el) { 
    if(el.txt === 'ccc') 
     console.log('found') 
}); 

可以这样配图()的grep()或inArray()完成或者我真的要循环通过整个数组寻找值?

回答

2

data是一个包含多个对象的数组,所以你需要指定数组的你想在看指数:

data[0].val === 'xxx'; 
data[1].val === 'yyy'; 
data[2].txt === 'ccc'; 

由于更新了自己的作用,这有什么错$.each?无论如何你都要用map或grep循环,所以你可以简单地说一句:P你也可以使用for来循环,但是我用$.each来取样,因为它与你当前的代码几乎相同。

$.each(data, function(el) { 
    if(el.txt === 'ccc') 
    console.log('found') 
}); 
0

您将不得不迭代整个数组,因为它是一个对象数组,并且比较对象是通过引用而不是值完成的。

for (var i = 0; i < data.length; i++){ 
    if (data[i].val == 'something') 
     doSomething(); 
} 
0
var stExist=$.inArray(reqelement, dataArray) 
+0

阅读我的答案,它不会工作。 '{} == {}'返回false。 – gdoron 2013-03-01 11:55:17

相关问题