Javascript 如何确定对象是否在数组中?
我有一个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,""], [
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,您将使用JQuerygrep
方法
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,您将使用JQuerygrep
方法
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