[英]jQuery Searching an Array of Arrays?
我有以下内容,我想弄清楚如何搜索对象数组 - call()
function 被多次调用?
var arr = [];
var newData;
function call() {
newData = $('a').attr('href');
if($.inArray(newData, arr) == -1) {
$.post('/blah', function(data) {
arr.push(data);
});
}
}
data
就像[object{ }]
所以arr
变成[[object{id='1', myUrl=''}], [object{id='2', myUrl='' }]]
。
我想弄清楚的是newData
是否包含在arr
中?
如果数组包含对象, $.inArray
将不起作用。 这是因为对象只有在相同 object 时才相等,而不仅仅是包含相同的值。
$.inArray
在这里也不起作用,因为newData
是一个字符串。 它不会为您在每个 object 中搜索,您需要自己使用自己的循环进行搜索。
像这样:
newData = $('a').attr('href');
$.each(arr, function(){
if(this.myUrl === newData){
$.post('/blah', function(data) {
arr.push(data);
});
return false; // break once a match is found
}
});
Array arr
将包含一个对象列表。 为什么newData
会被“包含”在arr
中? 它们是两个独立的变量。
更新 - 经进一步检查,这条线是不好的:
if($.inArray(newData, arr) == -1) {
您实际上是在说在 arr 中查找 newData(它是空的)。
更新 - 这是一些应该有效的示例代码。 在这里,我将数据视为具有名为“url”的属性的普通旧 object(不是对象数组)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.