Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我无法读取属性';从'开始;在这个for循环中未定义的?_Javascript_Arrays_Object_Vue.js_Ecmascript 6 - Fatal编程技术网

Javascript 为什么我无法读取属性';从'开始;在这个for循环中未定义的?

Javascript 为什么我无法读取属性';从'开始;在这个for循环中未定义的?,javascript,arrays,object,vue.js,ecmascript-6,Javascript,Arrays,Object,Vue.js,Ecmascript 6,我试图按“版本”对数组进行排序,然后识别所有以“iPad”开头的字符串 以下代码不记录任何内容并返回错误 orderedUsers: function () { let newarray = sortBy(this.jobs, 'version').reverse() for (let i in newarray) { if (i.version.startsWith('iPad')) { console.log(i.version); } } ret

我试图按“版本”对数组进行排序,然后识别所有以“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语句有关

我在这里做错了什么。

构造没有做你在这里想的事情。它被设计用于迭代对象。因此,在本例中,它将
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

这是什么.jobs
for..in
用于迭代对象<循环中的code>i是数组中的索引。索引没有版本属性。你看,我想我在回答你的最后一个问题时已经提到了这一点:相关:为什么你把中的链接到一本关于生锈的书上?这是一个错误。现在修好了。不过你很快!谢谢@Choc13:)你真的应该把Jack的答案标记为正确,而不是再次发布他的解决方案。我用amy最初的评论来修正-但如果是同一件事,你会把jacks标记为正确的