Javascript 如何确定对象是否在数组中?

Javascript 如何确定对象是否在数组中?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个javascript数组,如下所示: myFields = [ ["fb-method","drop",false,"How did you order?"], ["fb-date","calendar",false,""], ["fb-time","drop",false,""], ["fb-location","drop",false,""], ["fb-amount","text default",false,""], ["fb-share","drop",false,""], [

我有一个javascript数组,如下所示:

myFields = [
["fb-method","drop",false,"How did you order?"],
["fb-date","calendar",false,""],
["fb-time","drop",false,""],
["fb-location","drop",false,""],
["fb-amount","text default",false,""],
["fb-share","drop",false,""],
["fb-msg","textarea",true,""],
["next-btn","button",true,""]
]
len = fields.length;

//first check to make sure required fields are filled in
for(i=0; i<len; i++) {
     a = fields[i];
     if(a[0] != "fb-method") {
        // do stuff
    }
}
["fb-location","drop",false,""]
我能够在阵列中循环并处理如下特定位:

myFields = [
["fb-method","drop",false,"How did you order?"],
["fb-date","calendar",false,""],
["fb-time","drop",false,""],
["fb-location","drop",false,""],
["fb-amount","text default",false,""],
["fb-share","drop",false,""],
["fb-msg","textarea",true,""],
["next-btn","button",true,""]
]
len = fields.length;

//first check to make sure required fields are filled in
for(i=0; i<len; i++) {
     a = fields[i];
     if(a[0] != "fb-method") {
        // do stuff
    }
}
["fb-location","drop",false,""]
我尝试过使用jQuery的
.inArray
函数,但即使它应该返回false,它也会返回true。看

最好的办法是什么?jQuery或标准js很好。

不返回bool,而是返回索引(如果不存在匹配项,则返回
-1
)。您需要以下语句(基于您的JSFIDLE):

演示:

更新:

正如注释中提到的,这只是一个半解决方案,因为数组是多维的。我建议首先使用:

演示: 不返回布尔值,它返回索引(如果不存在匹配项,则返回
-1
)。您需要以下语句(基于您的JSFIDLE):

演示:

更新:

正如注释中提到的,这只是一个半解决方案,因为数组是多维的。我建议首先使用:

演示:

jquery.inArray返回元素的索引。如果未找到,则返回-1。。除0之外的任何数字都是真的,因此它表示“它存在”

jquery.inArray返回元素的索引。如果未找到,则返回-1。。除0之外的任何数字都是真的,因此除了
$之外,它还表示“它存在”。inArray
您可以使用
数组。在
tmp
上过滤

if(  tmp.filter(function(a) {return -~a.indexOf('fb-location');}).length ) {
  // exists
}

另见:

使用JQuery,您将使用JQuery
grep
方法

if(  $.grep(tmp,function(a) {return -~a.indexOf('fb-location');}).length ) {
  // exists
}

除了
$.inArray
之外,您还可以通过以下方式使用
tmp上的
Array.filter

if(  tmp.filter(function(a) {return -~a.indexOf('fb-location');}).length ) {
  // exists
}

另见:

使用JQuery,您将使用JQuery
grep
方法

if(  $.grep(tmp,function(a) {return -~a.indexOf('fb-location');}).length ) {
  // exists
}

打败我吧+1另外,这里还有一个小把戏:我认为,
.inArray
只有在OP引用了数组的一个元素,而不仅仅是一个具有相同内容的数组的情况下才会起作用。我要澄清的是,
-1
在Javascript中是真实的。请注意,这只是部分解决方案。数组是多维的。打败我吧+1另外,这里还有一个小把戏:我认为,
.inArray
只有在OP引用了数组的一个元素,而不仅仅是一个具有相同内容的数组的情况下才会起作用。我要澄清的是,
-1
在Javascript中是真实的。请注意,这只是部分解决方案。数组是多维的。如果您在使用之前阅读了,您会注意到,因为JavaScript将0粗略地视为等于false(即0==false,但0!==false),如果我们检查数组中是否存在值,我们需要检查它是否不等于(或大于)-1。我想您必须提供更好的解释。我不清楚您要将哪个值与
myFields
进行比较。在小提琴中,您使用了“fb位置”
,在问题中,您提到了
[“fb位置”,“下降”,错误,“]
myFields
是一个数组数组。您想将哪个值与哪个数组进行比较?是的,我知道myFields是一个数组数组。我需要知道,是真是假,任何数组是否在任何位置包含值“fb location”。如果您在使用它之前阅读了,您会注意到,因为JavaScript将0粗略地视为等于false(即0==false,但0!==false),如果我们检查数组中是否存在值,我们需要检查它是否不等于(或大于)-1。我认为你必须提供更好的解释。我不清楚您要将哪个值与
myFields
进行比较。在小提琴中,您使用了“fb位置”
,在问题中,您提到了
[“fb位置”,“下降”,错误,“]
myFields
是一个数组数组。您想将哪个值与哪个数组进行比较?是的,我知道myFields是一个数组数组。我需要知道,是真是假,如果任何数组在任何位置包含值“fb location”。在本例中,0也是真的,这意味着索引0包含匹配项。是的。但是对于
if
语句,0总是false。在本例中,0也是true,这意味着索引0包含匹配项。Yes。但是对于
if
语句,0总是false