我有一个名为Attr
的属性的JS对象,它可能包含不同的属性数组,例如Color[]
,Manufacturer[]
,Brands[]
等。
如何检查Attr
是否包含给定的属性数组?
例如,如何检查Attr
是否包含Color[]
?
我尝试了这个但是没有用:
if (Attr.hasOwnProperty('Color')) {
console.log("Has Colors array")
}
答案 0 :(得分:1)
您必须检查Color
数组是否存在,并且它是array
。假设Attr=attrs[0]
(根据您的更新)。
if (Attr.Color!=undefined && Array.isArray(Attr)) {
console.log("Has Colors array");
}
答案 1 :(得分:1)
由于attrs
本身就是一个对象数组,因此您需要在解决方案中关闭,但需要再降低一个级别。
要检查attrs
中的第一个对象(即,attr[0]
...您是否可以显然循环并使用类似attr[i]
之类的东西)是否有一个给定的数组,你会最好使用这种方法:
if (attrs[0].hasOwnProperty("Color")) {
. . . do something . . .
}
。 。 。或者,甚至:
if (attrs[0].Color !== undefined) {
. . . do something . . .
}
两者都可以工作,两者都可能更适合不同的情况(例如,如果您将数组的名称作为变量传递,则第一个可能更好,如果您检查特定的数组名称则第二个可能更好)。
<强>更新强>
对于记录,根据屏幕截图中显示的内容,您attr
变量的结构为:
attr = [
{
AspectRatio: [...],
Binding: [...],
Brand: [...],
Color: [...],
EAN: [...],
EANList: [...]
}
]
这应该更好地说明为什么在进行检查之前必须再降低一级。
答案 2 :(得分:0)
您可以使用Array.isArray
函数来检查Color
是否为数组。同样作为gaurd条件,您可以检查Color属性是否存在。从您更新的帖子中,您可以忽略该检查。
if (attrs[0].Color && Array.isArray(attrs[0].Color) ) {
console.log("Has Colors array")
}