Estoy perdiendo la mente. Tengo una matriz de objetos llamada allAvailabilities
console.log(allAvailabilities[0]);
da como resultado un objeto con varias propiedades, una de las cuales es:
... isTrainee: true ...
pero
console.log(allAvailabilities[0]['isTrainee']); console.log(allAvailabilities[0].isTrainee);
da como resultado
false false
No entiendo qué me impide acceder al valor real de isTrainee
de la propiedad del objeto:
console.log(typeof(allAvailabilities[0]['isTrainee'])); console.log(typeof(allAvailabilities[0].isTrainee)); console.log(allAvailabilities[0]['isTrainee'].toString()); console.log(allAvailabilities[0].isTrainee.toString());
resultados en:
boolean boolean false false
¿Cómo es esto posible? ¿Estoy pasando por alto una pieza fundamental de la sintaxis de Javascript? ¿Tiene esto que ver con la clase Boolean
como se describe aquí: ¿Por qué !new Boolean(false) es igual a false en JavaScript?
El fragmento funciona bien, ¿qué significa esto?
var allAvailabilities = [{_id: '605a5dd76f007e84f28e35fd', begin: '2021-04-03T18:00:00.000Z', end: '2021-04-03T20:30:00.000Z', season: 'regular', hostModel: 'users', isTrainee: true, season: "regular"}]; console.log(allAvailabilities[0]); console.log(typeof(allAvailabilities[0]['isTrainee'])); console.log(typeof(allAvailabilities[0].isTrainee)); console.log(allAvailabilities[0]['isTrainee'].toString()); console.log(allAvailabilities[0].isTrainee.toString());
La matriz allAvailabilities
original proviene de una API, y cada objeto de la matriz se modifica para tener la propiedad isTrainee
, inmediatamente antes de llamar al código con el que tengo problemas:
Creo que es porque hay una promesa de modificación asincrónica de isTrainee en el mapa. Creo que cambiar el mapa a for puede resolver el problema. Porque es una función síncrona en lugar de asíncrona.