标签: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开发小程序可能会出现最终访问的顺序和接口给的顺序不一致的情况,就像下面这样:
这个问题在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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。