ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

对象内数据遍历顺序出错

2022-06-20 09:00:36  阅读:129  来源: 互联网

标签:map 00 01 uniapp 顺序 遍历 2021 2022 出错


在uniapp开发小程序的时候,后端有时候给的数据是这样的顺序给好的日期:数据这样的键值对:

    let o = {
      '2021-01-01 00:00:00': '1',
      '2021-02-01 00:00:00': '2',
      '2021-03-01 00:00:00': '3',
      '2021-04-01 00:00:00': '4',
      '2021-05-01 00:00:00': '5',
      '2021-06-01 00:00:00': '6',
      '2021-07-01 00:00:00': '7',
      '2021-08-01 00:00:00': '8',
      '2021-09-01 00:00:00': '9',
      '2021-10-01 00:00:00': '10',
      '2021-11-01 00:00:00': '11',
      '2021-12-01 00:00:00': '12',
      '2022-01-01 00:00:00': '1',
      '2022-02-01 00:00:00': '2',
      '2022-03-01 00:00:00': '3',
      '2022-04-01 00:00:00': '4',
      '2022-05-01 00:00:00': '5',
      '2022-06-01 00:00:00': '6',
      '2022-07-01 00:00:00': '7',
      '2022-08-01 00:00:00': '8',
      '2022-09-01 00:00:00': '9',
      '2022-10-01 00:00:00': '10',
      '2022-11-01 00:00:00': '11',
      '2022-12-01 00:00:00': '12',
    };
    
    for (let k in o) {
      console.log(k);
    }

但是使用for...in...循环遍历这个对象,并打印其key值,在uniapp开发小程序可能会出现最终访问的顺序和接口给的顺序不一致的情况,就像下面这样:

image.png

这个问题在web端并没有遇到过,只是在使用uniapp开发小程序时处理接口给的数据时出现过这个问题导致了bug。使用uniapp开发小程序坑太多,所以具体原因并不想深究,这里只说一下处理办法:

    function sortDateFn(obj) {
      if (obj.toString() !== '[object Object]') return;
      /* 排序后的map */
      const newObj = {};
      const sortedKeys = Object.keys(obj).sort(
        (a, b) => new Date(a) - new Date(b)
      );

      /* 将排好序的日期与原map的数据绑定起来 */
      sortedKeys.forEach((k) => {
        newObj[k] = obj[k];
      });

      return newObj;
    }

上面的方法,就是将map的key值重新拿出来排个序,再遍历排好序的key值,将原map对象对应的value放入新map对象中。

标签:map,00,01,uniapp,顺序,遍历,2021,2022,出错
来源: https://www.cnblogs.com/codexlx/p/16392095.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有