javascript - 为什么我的 for/in 循环给我空结果,但我的常规 for 循环没有(图片)?
问题描述
我正在尝试使用 for/in 循环迭代一个对象数组,以将每个对象的一些属性记录到 Chrome 开发控制台,但我不断得到空值。然后我决定使用常规的 for 循环,并在开发控制台中收到了我期望的值。
有人可以向我解释为什么当常规 for 循环给我预期的(非空)值时 for/in 给我空值?
这是代码:
watch: {
events() {
console.log(this.events)
for(let event in this.events) {
console.log(`Lat: ${event.latitude}, Lng: ${event.longitude}`)
}
for(let i = 0; i < this.events.length; i++) {
console.log(`Lat: ${this.events[i].latitude}, Lng: ${this.events[i].longitude}`)
}
}
}
图片供参考: 控制台日志输出
链接图片中的第一个输出是数组,第二个是 for/in 循环值(旁边有“10”的那个),之后的值是来自常规 for 循环的值。
解决方案
for...in
用于迭代对象属性,而不是用于迭代数组。改用for...of
:
watch: {
events() {
console.log(this.events)
for(const event of this.events) {
console.log(`Lat: ${event.latitude}, Lng: ${event.longitude}`)
}
for(let i = 0; i < this.events.length; i++) {
console.log(`Lat: ${this.events[i].latitude}, Lng: ${this.events[i].longitude}`)
}
}
}
推荐阅读
- hash - 为什么像 MD5 和 SHA256 这样的哈希会产生 2^n 组合?
- python - loguru 为使用 bot 框架创建的 bot 的输出创建空白日志
- sqlalchemy - 有没有办法在 SQLAlchemy 中组合“column_property”查询?
- html - 导航栏在引导程序 3.3.7 中没有折叠
- c# - 如何创建仅侦听事件的 .NET 后台服务?
- c - fputs和puts in c的区别
- javascript - swiper.js 滑块不适用于动态内容
- dart - 如何在 Dart 中创建“常量引用”getter?
- python - Python 3.9.6 / Mac OS Big Sur 出现 re.error
- c - FTP协议STOR cmd在c中正确接收文件