访问 javascript 中对象的布尔值 属性 总是 returns false?

Accessing a boolean property of an object in javascript always returns false?

我快疯了。我有一个名为 allAvailabilities

的对象数组
console.log(allAvailabilities[0]);

生成具有各种属性的对象,其中之一是:

...
isTrainee: true
...

但是

console.log(allAvailabilities[0]['isTrainee']);
console.log(allAvailabilities[0].isTrainee);

结果

false
false

我不明白是什么阻止我访问对象的实际 isTrainee 值 属性:

console.log(typeof(allAvailabilities[0]['isTrainee']));
console.log(typeof(allAvailabilities[0].isTrainee));
console.log(allAvailabilities[0]['isTrainee'].toString());
console.log(allAvailabilities[0].isTrainee.toString());

结果:

boolean
boolean
false
false

这怎么可能?我是否忽略了 Javascript 语法的基本部分?这是否与此处所述的 Boolean class 有关: Why does !new Boolean(false) equals false in JavaScript?

代码段工作正常,这是什么意思?

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());

怎么会这样?

原始allAvailabilities数组来自API,数组中的每个对象都被修改为具有isTrainee 属性,紧接着调用我遇到问题的代码:

我觉得是因为map里面有isTrainee的promise异步修改。我认为将地图更改为 for 可能会解决问题。 for 是一个同步函数而不是异步函数。