Array.isArray считает ложным - PullRequest
1 голос
/ 14 июля 2020

Я новый 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));

Ответы [ 3 ]

6 голосов
/ 14 июля 2020

В первом фрагменте heroes - это массив. Первым элементом массива является объект

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

. Присваивание деструктуризации устанавливает lol для этого элемента и устанавливает dc в undefined, потому что в массиве нет второго элемента. Вышеупомянутый объект не является массивом, поэтому Array.isArray(lol) ложно.

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

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

Во втором фрагменте heroes - это объект. Присваивание деструктуризации устанавливает lol в значение свойства lol в объекте, которое равно ['l', 'Iron Man']. Он устанавливает dc в свойство dc; так как этого не существует, он установлен на undefined. Since lol is set to an array, Array.isArray (lol) `истинно.

Если вы хотите установить lol в массив в первом фрагменте, вы нужен другой уровень вложенности.

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

const [{lol, dc}] = heroes;
console.log(Array.isArray(lol)); 
0 голосов
/ 14 июля 2020

в const [lol, d c] = heroes lol - это объект {lol: ['l', 'Iron Man']} в const {lol, d c} = heroes lol - это массив [ «l», «Железный человек»]

0 голосов
/ 14 июля 2020

, потому что в первом примере вы пытаетесь деструктурировать, используя [], который используется для деструктурирования массивов, однако {} должны использоваться для деструктуризации объекта

, поэтому в вашем случае вы должны сначала деструктурировать массив сначала используя [], а затем внутри {}, чтобы разрушить объект

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