jQuery如果对象有值
我有这样一个物体:jQuery如果对象有值,jquery,object,Jquery,Object,我有这样一个物体: tabArray.push({'linkId': 'tabBuild', 'id': 'columnRight','url': '/pages/publish/', 'content':response}); 如何使用jQuery/javascript对该对象进行测试,以查看它是否包含某个URL 我试过这样做:if($.inArray('/pages/publish/',tabArray)>-1)警报('itsinthere') 但是没有用 试试下面的方法 var inAr
tabArray.push({'linkId': 'tabBuild', 'id': 'columnRight','url': '/pages/publish/', 'content':response});
如何使用jQuery/javascript对该对象进行测试,以查看它是否包含某个URL
我试过这样做:if($.inArray('/pages/publish/',tabArray)>-1)警报('itsinthere')代码>
但是没有用 试试下面的方法
var inArray = false;
for (var i = 0; i < tabArray.length; i++) {
if (tabArray[i].url === '/pages/publish') {
inArray = true;
break;
}
}
var-inArray=false;
对于(var i=0;i
$。inArray不起作用,因为它只用于搜索字符串数组,而数组是对象数组。您可以在数组中创建自己的方法
var inURLArray = function(url, array) {
for(var i in array) {
if(array[i].url && array[i].url === url)
return true;
}
return false;
}
这应该起作用:
var inArray = !!$.grep(tabArray, function(item) {
return item.url === '/pages/publish/';
}).length;
console.log(inArray); // true
在数组的每个元素上仔细访问.url可能重复,例如,它可能并不总是被定义的。@Skylar如果它没有定义,那么它应该返回未定义的
,并与字符串文本进行比较失败。我看不出这会导致什么问题。如果没有定义url
,这没关系。以这种方式访问它将返回未定义的
,而不是==
到'/pages/publish'
,代码将继续以其愉快的方式运行。你们是对的,我想我说的更多的是我自己的编码风格,而不是语法上必然合理的东西。好主意。你为什么在这里用==
而不是==
?我不相信数组[I].url&
部分是必要的。如果未定义array[i].url
,则它将返回undefined
,并与url
进行比较失败,谢谢。在找到匹配项后,可能也应该是a-1,以避免短路,但迭代速度很快,如果性能折衷最小,我通常会选择可读性。