为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我从 vue.js 组件脚本中的一个简单的 for 循环中收到“我未定义”错误?

为什么我从 vue.js 组件脚本中的一个简单的 for 循环中收到“我未定义”错误?

富国沪深 2021-06-30 13:31:17
我正在尝试获取一个数组,按版本对该数组进行排序,然后将所有以“ipad”开头的版本移动到列表的末尾。来自单个文件 vue.js 组件的片段:  computed: {    orderedUsers: function () {      let newArray = sortBy(this.jobs, 'version').reverse()      for (i in newArray) {        if (i.version.startsWith('iPad')) {          newlist.push(newlist.splice(i, 1)[0]);        }      }      return newArray  },错误:vue.runtime.esm.js?e832:619 [Vue warn]: Error in render: "ReferenceError: i is not defined"不确定这是 js 问题还是 vue.js 问题
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

尝试在 for 循环中使用 let i 之前添加它。请参阅下面的示例。


for (let i in newArray) {

  if (i.version.startsWith('iPad')) {

    newlist.push(newlist.splice(i, 1)[0]);

  }

}


查看完整回答
反对 回复 2021-07-08
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

原代码的几个问题。

  1. 失踪const/leti

  2. in循环应该是of。或者可能不是。以下几行似乎假定i既是索引又是条目。

  3. newlist 没有定义。

  4. 它似乎试图在迭代数组的同时对其进行变异。

我想你正在寻找更像这样的东西。

const newArray = sortBy(getData(), 'version').reverse()

const nonIPads = []

const iPads = []


for (const entry of newArray) {

  if (entry.version.startsWith('iPad')) {

    iPads.push(entry)

  } else {

    nonIPads.push(entry)

  }

}


const all = [...nonIPads, ...iPads]


console.log(all)


function sortBy(array, property) {

  return [...array].sort((a, b) => {

    const valueA = a[property]

    const valueB = b[property]


    if (valueA === valueB) {

      return 0

    }


    return valueA < valueB ? -1 : 1

  })

}


function getData() {

  return [

    {version: 'f'},

    {version: 'a'},

    {version: 'd'},

    {version: 'iPad 3'},

    {version: 'iPad 1'},

    {version: 'iPad 4'},

    {version: 'e'},

    {version: 'c'},

    {version: 'g'},

    {version: 'b'},

    {version: 'iPad 2'}

  ]

}


查看完整回答
反对 回复 2021-07-08
  • 2 回答
  • 0 关注
  • 221 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信