小程序 如何将返回来多条数据转为数组?并且setData

发布于 2022-09-11 21:22:38 字数 1334 浏览 28 评论 0

小程序
上传多张图片完成后,返回来多条图片真实路径数据,我将它们用JSON.parse转换好了之后。。。。就开始懵了,不懂怎么把它们全部都再转为数组。。。本人基础很差,被赶鸭子上架
请问各位大佬如何将多条返回来的数据转为数组。。。。

uploadBtn: function() {
    let that = this
    wx.chooseImage({
      count: 9,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success(res) {
        that.setData({
          uploadlist: res.tempFilePaths
        })
        let tempFilePaths = res.tempFilePaths
        for (var i = 0; i < tempFilePaths.length; i++) {
          wx.uploadFile({
            url: app.globalData.api + 'Justice/upload' + app.globalData.key,
            filePath: tempFilePaths[i],
            name: 'file',
            header: {
              'content-type': 'multipart/form-data'
            },
            formData: {
              token: wx.getStorageSync('token'),
              village_id: wx.getStorageSync('village_id'),
              gov_id: wx.getStorageSync('gov_id'),
            },
            success(res) {
              let returnPATH = res.data
              console.log(JSON.parse(returnPATH))
            }
          })
        }
      }
    })
  },

下面是两张是转换前和转后返回的数据
图片描述

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

傲世九天 2022-09-18 21:22:38
let imgArr = []; // 保存全部url的数组
uploadBtn: function() {
    let that = this
    wx.chooseImage({
      count: 9,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success(res) {
        that.setData({
          uploadlist: res.tempFilePaths
        })
        let tempFilePaths = res.tempFilePaths
        for (var i = 0; i < tempFilePaths.length; i++) {
          wx.uploadFile({
            url: app.globalData.api + 'Justice/upload' + app.globalData.key,
            filePath: tempFilePaths[i],
            name: 'file',
            header: {
              'content-type': 'multipart/form-data'
            },
            formData: {
              token: wx.getStorageSync('token'),
              village_id: wx.getStorageSync('village_id'),
              gov_id: wx.getStorageSync('gov_id'),
            },
            success(res) {
              let returnPATH = JSON.parse(res.data)
              imgArr.push(returnPATH.url)
              console.log(JSON.parse(returnPATH))
            }
          })
        }
      }
    })
  },
生活了然无味 2022-09-18 21:22:38

最简单粗暴的方法:

声明一个空数组变量,比如let imgArray = [],然后每返回一条数据就把url提出来,用push()方法添加进数组,然后可能还需要再赋值给一个全局变量,方便你后面使用。

这样不就成为一个数组了吗。。。。

美男兮 2022-09-18 21:22:38

如果是需要等待所有数据上传完成后,获取包含全部数据的数组,可使用promise:

    updateFile: function(filePath) {
        return new Promise((resolve, reject) => {
            wx.uploadFile({
                url: app.globalData.api + 'Justice/upload' + app.globalData.key,
                filePath: filePath,
                name: 'file',
                header: {
                  'content-type': 'multipart/form-data'
                },
                formData: {
                  token: wx.getStorageSync('token'),
                  village_id: wx.getStorageSync('village_id'),
                  gov_id: wx.getStorageSync('gov_id'),
                },
                success(res) {
                    resolve(JSON.parse(res.data));
                },
                fail(error) {
                    reject(error);
                }
            })
        })
    },
    uploadBtn: function() {
        let that = this;
        wx.chooseImage({
          count: 9,
          sizeType: ['original', 'compressed'],
          sourceType: ['album', 'camera'],
          success(res) {
            that.setData({
              uploadlist: res.tempFilePaths
            })
            let tempFileUploads = res.tempFilePaths.map(url => this.updateFile(url));
            Promise.all(tempFileUploads).then(dataArr => {
                console.log(dataArr); // 所有上传成功后的链接
            }).catch(error => console.error(error)); 
          }
        })
    },
忆沫 2022-09-18 21:22:38

全局定义一个set结构,监听单个图片上传完成事件后,判断set.has(url), 没有的话add到set中,最后set 转数组。
let set = new Set();
if(!set.has(url)){

set.add(url);

}
let array = [];
if(set.size == imgs.length){

array = Array.from(set);

}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文