Array.isArray 说是假的

Array.isArray says to be false

我是 javascript 新手,目前正在学习解构。 我的问题在我编辑了一下的片段中。控制台说是数组,没想到应该是?

1:这怎么不是数组?

const heroes = [{
  lol: ['l', 'Iron Man']
}]

const [lol, dc] = heroes;
console.log(Array.isArray(lol)); 

2:这个怎么是数组?

const heroes = {
  lol: ['l', 'Iron Man']
}

const {lol, dc} = heroes;
console.log(Array.isArray(lol));

在第一个片段中,heroes 是一个数组。数组的第一个元素是对象

{
 lol:['l', 'Iron Man' ]
}

解构赋值将 lol 设置为该元素,并将 dc 设置为 undefined 因为数组中没有第二个元素。上面的对象不是数组,所以Array.isArray(lol)是false。

const heroes = [{
 lol:['l', 'Iron Man' ]
}]

const [element1, element2 ] = heroes;
console.log(element1); 

在第二个片段中,heroes 是一个对象。解构赋值将lol设置为对象中lol属性的值,即['l', 'Iron Man']。它将 dc 设置为 dc 属性;因为这不存在,它被设置为 undefined. Since lolis set to an array,Array.isArray(lol)` is true.

如果要将 lol 设置为第一个片段中的数组,则需要另一层嵌套。

const heroes = [{
 lol:['l', 'Iron Man' ]
}]

const [{lol, dc}] = heroes;
console.log(Array.isArray(lol)); 

因为您尝试使用 [] 解构的第一个示例用于解构数组,但是 {} 将用于解构对象

所以在你的情况下,你应该首先使用 [] 解构数组,然后在 {} 中解构对象

const heroes = [{
  lol:['l', 'Iron Man' ]
 }]
 
 const [{lol, dr}] = heroes;
 console.log(lol)
 console.log(Array.isArray(lol));

in const [lol, dc ] = heroes lol 是一个对象 {lol:['l', 'Iron Man' ]} in const {lol, dc } = heroes lol 是一个数组 ['l', 'Iron Man' ]