使用jquery查找javascript对象中是否存在值

时间:2013-03-01 11:48:13

标签: javascript jquery

我正在尝试确定对象是否包含特定值,以便我可以确保不会追加我要查找的值多次并阻止递归。

我尝试了很多方法但却无法使用它们:

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')
});

可以用map()grep()或inArray()来完成,还是我真的需要遍历整个数组来寻找值?

4 个答案:

答案 0 :(得分: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') }); 相同。你当前的代码。

{{1}}

答案 1 :(得分:0)

你必须迭代整个数组,因为它是一个对象数组,比较对象是由引用而不是由值完成的。

for (var i = 0; i < data.length; i++){
    if (data[i].val == 'something')
        doSomething();
}

答案 2 :(得分:0)

如果您希望自己避免所有这些计算,那么有一个实用程序插件underscore.js ,它有很多帮助器。

您正在寻找的帮助者之一http://underscorejs.org/#contains

答案 3 :(得分:0)

var stExist=$.inArray(reqelement, dataArray)