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,以避免短路,但迭代速度很快,如果性能折衷最小,我通常会选择可读性。