vue关于中数组的问题

public xmmcList: any = []

public async getProjectName(uid: any) {
    const res: any = await Service.getProNameApi({ uuid: uid })
    if (res && res.code === 0 && res.data.length) {
     // for of的写法跟下面map的写法有什么区别吗?
     // 为什么push可以显示数据
     // 下面的map返回值就不行
      this.xmmcList.length = 0
      for (const item of res.data) {
        this.xmmcList.push({
          ...item,
          value: item.xmmc,
          label: item.xmmc
        })
      }

      // this.xmmcList = res.data.map((item: any) => {
      //   return {
      //     ...item,
      //     label: item.xmmc,
      //     value: item.xmmc
      //   }
      // })

      console.log(this.xmmcList)
      // console.log(this.tableData.columns[3].editRender.options = this.xmmcList)
    }
  }
阅读 1.6k
2 个回答

map 的写法相当于:

const temp = [];
for (const item of res.data) {
  temp.push({
    // ...item,
    value: item.xmmc,
    label: item.xmmc
  })
}

this.xmmcList = temp;

所以,如果迭代函数返回的子项与push接收的参数一样的话,两种方法的结果是等效的。
但是你的代码里有一个地方不一样,就是我示例代码里注释掉的那一句,你可以试着在 map 的迭代函数里加上这一句(注意去掉注释),使它保持与for...of 写法的结果一致。
解决了这个问题再看其他地方。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏