![](/img/trans.png)
[英]Why am I getting TypeError: Cannot read property 'now' of undefined
[英]Why am I getting Cannot read property 'startsWith' of undefined in this for loop?
我正在尝试按“版本”对数组进行排序,然后识别以“iPad”开头的所有字符串。
以下代码不记录任何内容并返回错误。
orderedUsers: function () {
let newarray = sortBy(this.jobs, 'version').reverse()
for (let i in newarray) {
if (i.version.startsWith('iPad')) {
console.log(i.version);
}
}
return newarray
错误:
TypeError: Cannot read property 'startsWith' of undefined
如果我删除 for 循环并放置:
orderedUsers: function () {
let newarray = sortBy(this.jobs, 'version').reverse()
return newarray
该列表按版本正确排序。 这让我认为错误与我如何编写 for 循环或 if 语句有关。
我在这里做错了什么。
for...in
构造并没有按照您的想法进行操作。 它旨在迭代对象。 所以在这种情况下,它将newArray
视为一个对象,但将属性名称作为数组索引。 Javascript 中的数组只是具有数字属性名称的对象。 更具体地说,如果您将代码更改为:
for (let i in newarray) {
if (i.version.startsWith('iPad')) {
console.log(i);
}
}
你会清楚地看到问题所在。 i
是一个数字而不是一个工作对象。
使固定:
orderedUsers: function () {
let newarray = sortBy(this.jobs, 'version').reverse()
for (let i in newarray) {
if (newarray[i].version.startsWith('iPad')) {
console.log(newarray[i].version);
}
}
return newarray
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.