我正在尝试确定对象是否包含特定值,以便我可以确保不会追加我要查找的值多次并阻止递归。
我尝试了很多方法但却无法使用它们:
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()来完成,还是我真的需要遍历整个数组来寻找值?
答案 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)