我是 js 的新手(显然)。我正在使用猫鼬,我想知道:为什么在使用 for 循环访问属性时会出错?
我正在使用包含嵌入式架构的架构
Usr.findOne({numCli: req.body.numTar}, function(err, doc){
if (doc) {
var i = 0;
const lengthAcc = doc.acc.length;
//can access prop individually
console.log(doc.acc[lengthAcc-1].propOne);
// can't using for loop: TypeError: Cannot read property 'propOne' of undefined
for (i = 0; i < 10; i++) {
console.log(doc.acc[lengthAcc - i].propOne);
}
}
});
如果检查您的代码,则在第一个控制台中
console.log(doc.acc[lengthAcc-1].propOne);
你试图访问 doc.acc[lengthAcc-1].propOne 所以它的工作
但在第二个控制台
console.log(doc.acc[lengthAcc - i].propOne);
你试图访问 doc.acc[lengthAcc-i].propOne 和 i=0 所以它是 doc.acc[lengthAcc-0].propOne 这就是为什么它不起作用
bcz array.length 返回数组中元素的个数,所以如果数组包含 5 个元素 (0-4) 所以 array.length 返回 5
如果你尝试访问 array[array.length - 1] = 4 它等于 array[4] 所以它的工作
但是如果你尝试访问 array[array.length - 0] = 5 它等于 array[5] 并且 array 没有索引 5 所以它会抛出错误。
所以,解决方案只是从 1 开始循环
for (i = 1; i < 10; i++) {
console.log(doc.acc[lengthAcc - i].propOne);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句