收藏
回答

关于小程序的data数据

最近发现了一个问题  由于使用JSON.parse不能解析特殊符号,所以使用了encodeURIComponent进行转码

但是奇怪的是 转码之后 data对象里的数据源也发生了变化,并没有使用setdata进行数据修改,求官方一个解答

这是源数据

http://www.xzyigong.com/MemberImg/member2018081112512685421.jpg?x-oss-process=image/resize,m_lfit,w_750,limit_1/auto-orient,0/sharpen,50/quality,q_90/format,jpg


在进行转码之后




回答关注问题邀请回答
收藏

2 个回答

  • 禾店科技
    禾店科技
    2021-05-11

    谢谢楼主

    2021-05-11
    有用 1
    回复
  • Sunny
    Sunny
    2018-11-30

    自己测试了一下 使用对象的深拷贝去复制一个对象再进行编码就可以避免这个问题

    有遇到过这个问题的小伙伴可以看一下 这里提供一个深度拷贝的方法

    // 对象拷贝
    function deepClone(source) {
      const targetObj = source.constructor === Array ? [] : {}; // 判断复制的目标是数组还是对象
      for (let keys in source) { // 遍历目标
        if (source.hasOwnProperty(keys)) {
          if (source[keys] && typeof source[keys] === 'object') { // 如果值是对象,就递归一下
            targetObj[keys] = source[keys].constructor === Array ? [] : {};
            targetObj[keys] = deepClone(source[keys]);
          } else { // 如果不是,就直接赋值
            targetObj[keys] = source[keys];
          }
        }
      }
      return targetObj;
    }


    2018-11-30
    有用
    回复
登录 后发表内容