Javascript数组包括

Javascript数组包括,javascript,Javascript,我试图找出数组是否包含特定索引,或者是否使用以下代码行: var array1 = [{ "abc": 123, "def": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 2, "c": 1}]}] console.log(array1.includes('def')); 数组包含“def”,因此如果我用以下方式定义数组,控制台实际上应该返回true: var array1 = [{ "abc": 123, "def": [{"a": 1, "b":

我试图找出数组是否包含特定索引,或者是否使用以下代码行:

var array1 = [{ "abc": 123, "def": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 2, "c": 1}]}]

console.log(array1.includes('def'));

数组包含“def”,因此如果我用以下方式定义数组,控制台实际上应该返回true:

var array1 = [{ "abc": 123, "def": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 2, "c": 1}]}]
用另一种方式定义它,如:

var array1 = [{ "abc": 123 }]
应该返回false


因此,上面的代码不能正常工作,有人知道是什么导致它响应错误的布尔值吗


我感谢任何建议

数组。includes
根据
(x)
是否是给定
数组中的值而不是键返回布尔值。如果希望
array1.includes('def')
返回其他部分,则必须执行
Object.keys(array1[0]).includes('def')

正确的方法是
array1.some(n=>n.hasOwnProperty('def'))
。请注意,数组中没有
def
,而是包含
def
property

的对象。这里的问题是,您试图访问对象中的元素,而该对象位于列表中。要访问列表元素,需要指定其索引(此处为0)。然后可以使用object.keys访问对象键

var array1=[{“abc”:123,“def”:[{“a”:1,“b”:2,“c”:3},{“a”:3,“b”:2,“c”:1}]}]
Object.keys(array1[0]).forEach((元素)=>{
if(element==“def”)console.log(true);

})
这是因为您没有指明您想到的数组

如果您选择console.log
Object.getOwnPropertyNames(array1)
array1
是一个对象的数组。要获得正确的结果,必须检查内部对象是否具有
def
属性,因此:

array1[0].hasOwnProperty('def') // returns true

数组不包含
def
,它包含一个包含
def
的对象。includes返回布尔值,但关于对象“数组包含
def
”–不,数组包含一个很可能具有
def
属性的对象。真的不清楚问题是什么,是否可以嵌套在更深处,等等。答案应该不仅仅是“你可以这样做。”。他们应该解释问题和解决方案。