小程序
小游戏
企业微信
微信支付
扫描小程序码分享
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
把key,value搞成数组,再循环
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
wxs 不是 js
马云那么有钱为什么我是个穷鬼?
https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/
WXS 与 JavaScript 是不同的语言,有自己的语法,并不和 JavaScript 一致。
解决方案可以在wxs中使用polyfill,具体实现如下:
function forEachObj(obj, callback) { var json = JSON.stringify(obj) .replace(getRegExp('\n', 'g'), '') .replace(getRegExp('^\{'), '') .replace(getRegExp('\}$'), '') .trim(); if (typeof callback !== 'function' || json === '') return; var specialExp = getRegExp('\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})', 'g'); var contExp = getRegExp('"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?', 'g'); var dangerousExp = getRegExp('[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]', 'g'); dangerousExp.lastIndex = 0; var commaExp = getRegExp('\,', 'g'); var bklExp = getRegExp('\[', 'g'); var bkrExp = getRegExp('\]', 'g'); var bslExp = getRegExp('\{', 'g'); var bsrExp = getRegExp('\}', 'g'); if (dangerousExp.test(json)) { json = json.replace(dangerousExp, function(str) { return '\\u' + ('0000' + str.charCodeAt(0).toString(16)).slice(-4); }); } var specialFlags = json.match(specialExp) || []; var dedupFlags = []; for (var sp = 0; sp < specialFlags.length; sp++) { var item = specialFlags[sp]; if (dedupFlags.indexOf(item) === -1) { dedupFlags.push(item); } } dedupFlags.sort(function(a,b) { var perv = a.split('').filter(function(f) { return '\\' === f }).length; var next = b.split('').filter(function(f) { return '\\' === f }).length; return next - perv; }); var rmSize = 7; var ltSize = rmSize + dedupFlags.length; var letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']; var randomList = []; for (var l = 0; l < ltSize; l++) { var flag = true; while(flag) { var strList = []; while(strList.length < 5) { var idx = Math.floor(Math.random() * letters.length); if (strList.indexOf(letters[idx]) === -1) { strList.push(letters[idx]); } } var joinStr = '@' + strList.join('') + '@'; if (randomList.indexOf(joinStr) === -1 && json.indexOf(joinStr) === -1) { randomList.push(joinStr); flag = false; } } } var replaceMap = { comma: randomList[0], bkl: randomList[1], bkr: randomList[2], bsl: randomList[3], bsr: randomList[4], contSplit: randomList[5], split: randomList[6] }; var specialRandoms = randomList.slice(rmSize, ltSize); var eqFlag = '\\'.charAt(0); for (var dpf = 0; dpf < dedupFlags.length; dpf++) { var item = dedupFlags[dpf]; var targetItem = item.split('').map(function(m) { var isSpecFlag = m.charAt(0) === eqFlag; if (isSpecFlag) { m = eqFlag + m; } return m; }).join(''); json = json.replace(getRegExp(targetItem, 'g'), specialRandoms[dpf]); } var jsonConts = json.match(contExp) || []; var jsonFlags = json.replace(contExp, replaceMap.contSplit).split(replaceMap.contSplit); var joinJson = ''; for (var j = 0; j < jsonConts.length; j++) { var item = jsonConts[j]; if (commaExp.test(item) || bklExp.test(item) || bkrExp.test(item) || bslExp.test(item) || bsrExp.test(item)) { item = item .replace(getRegExp('\,$'), '') .replace(commaExp, replaceMap.comma) .replace(bklExp, replaceMap.bkl) .replace(bkrExp, replaceMap.bkr) .replace(bslExp, replaceMap.bsl) .replace(bsrExp, replaceMap.bsr); } joinJson += (jsonFlags[0] || '') + item; jsonFlags.shift(); } json = joinJson + (jsonFlags[0] || ''); var jsonList = json.replace(getRegExp('\,', 'g'), ',' + replaceMap.split).split(replaceMap.split); var count = 0; var jsonStr = ''; for (var i = 0; i < jsonList.length; i++) { var item = jsonList[i]; if (getRegExp('\[|\{|\]|\}').test(item)) { var start = item.match(getRegExp('\[|\{', 'g')) || []; var end = item.match(getRegExp('\]|\}', 'g')) || []; var diff = start.length - end.length; count += diff; jsonStr += item; } else if (count > 0) { jsonStr += item; } else if (count === 0 && jsonStr === '') { jsonStr = item; } if (count === 0) { jsonStr = jsonStr .replace(getRegExp(replaceMap.comma, 'g'), ',') .replace(getRegExp(replaceMap.bkl, 'g'), '[') .replace(getRegExp(replaceMap.bkr, 'g'), ']') .replace(getRegExp(replaceMap.bsl, 'g'), '{') .replace(getRegExp(replaceMap.bsr, 'g'), '}'); var keyStr = (jsonStr.match(getRegExp('"[^"\\\n\r]*"')) || [])[0] || ''; var valueStr = jsonStr.replace(keyStr, '').replace(getRegExp('^:'),'').replace(getRegExp('\,$'), '') || ''; for (var sr = 0; sr < specialRandoms.length; sr++) { var item = specialRandoms[sr]; keyStr = keyStr.replace(getRegExp(item, 'g'), dedupFlags[sr]); valueStr = valueStr.replace(getRegExp(item, 'g'), dedupFlags[sr]); } var kv = JSON.parse('['+keyStr+','+valueStr+']'); callback(kv[0], kv[1]); jsonStr = ''; } } }
相关链接:
CSDN: https://blog.csdn.net/Avril_L/article/details/134882886
github:https://github.com/chenwei1012/for-each-object/tree/release-v1.0.0
gitee:https://gitee.com/chenwei1012/for-each-object/tree/master
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
把key,value搞成数组,再循环
wxs 不是 js
马云那么有钱为什么我是个穷鬼?
https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/
解决方案可以在wxs中使用polyfill,具体实现如下:
function forEachObj(obj, callback) { var json = JSON.stringify(obj) .replace(getRegExp('\n', 'g'), '') .replace(getRegExp('^\{'), '') .replace(getRegExp('\}$'), '') .trim(); if (typeof callback !== 'function' || json === '') return; var specialExp = getRegExp('\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})', 'g'); var contExp = getRegExp('"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?', 'g'); var dangerousExp = getRegExp('[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]', 'g'); dangerousExp.lastIndex = 0; var commaExp = getRegExp('\,', 'g'); var bklExp = getRegExp('\[', 'g'); var bkrExp = getRegExp('\]', 'g'); var bslExp = getRegExp('\{', 'g'); var bsrExp = getRegExp('\}', 'g'); if (dangerousExp.test(json)) { json = json.replace(dangerousExp, function(str) { return '\\u' + ('0000' + str.charCodeAt(0).toString(16)).slice(-4); }); } var specialFlags = json.match(specialExp) || []; var dedupFlags = []; for (var sp = 0; sp < specialFlags.length; sp++) { var item = specialFlags[sp]; if (dedupFlags.indexOf(item) === -1) { dedupFlags.push(item); } } dedupFlags.sort(function(a,b) { var perv = a.split('').filter(function(f) { return '\\' === f }).length; var next = b.split('').filter(function(f) { return '\\' === f }).length; return next - perv; }); var rmSize = 7; var ltSize = rmSize + dedupFlags.length; var letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']; var randomList = []; for (var l = 0; l < ltSize; l++) { var flag = true; while(flag) { var strList = []; while(strList.length < 5) { var idx = Math.floor(Math.random() * letters.length); if (strList.indexOf(letters[idx]) === -1) { strList.push(letters[idx]); } } var joinStr = '@' + strList.join('') + '@'; if (randomList.indexOf(joinStr) === -1 && json.indexOf(joinStr) === -1) { randomList.push(joinStr); flag = false; } } } var replaceMap = { comma: randomList[0], bkl: randomList[1], bkr: randomList[2], bsl: randomList[3], bsr: randomList[4], contSplit: randomList[5], split: randomList[6] }; var specialRandoms = randomList.slice(rmSize, ltSize); var eqFlag = '\\'.charAt(0); for (var dpf = 0; dpf < dedupFlags.length; dpf++) { var item = dedupFlags[dpf]; var targetItem = item.split('').map(function(m) { var isSpecFlag = m.charAt(0) === eqFlag; if (isSpecFlag) { m = eqFlag + m; } return m; }).join(''); json = json.replace(getRegExp(targetItem, 'g'), specialRandoms[dpf]); } var jsonConts = json.match(contExp) || []; var jsonFlags = json.replace(contExp, replaceMap.contSplit).split(replaceMap.contSplit); var joinJson = ''; for (var j = 0; j < jsonConts.length; j++) { var item = jsonConts[j]; if (commaExp.test(item) || bklExp.test(item) || bkrExp.test(item) || bslExp.test(item) || bsrExp.test(item)) { item = item .replace(getRegExp('\,$'), '') .replace(commaExp, replaceMap.comma) .replace(bklExp, replaceMap.bkl) .replace(bkrExp, replaceMap.bkr) .replace(bslExp, replaceMap.bsl) .replace(bsrExp, replaceMap.bsr); } joinJson += (jsonFlags[0] || '') + item; jsonFlags.shift(); } json = joinJson + (jsonFlags[0] || ''); var jsonList = json.replace(getRegExp('\,', 'g'), ',' + replaceMap.split).split(replaceMap.split); var count = 0; var jsonStr = ''; for (var i = 0; i < jsonList.length; i++) { var item = jsonList[i]; if (getRegExp('\[|\{|\]|\}').test(item)) { var start = item.match(getRegExp('\[|\{', 'g')) || []; var end = item.match(getRegExp('\]|\}', 'g')) || []; var diff = start.length - end.length; count += diff; jsonStr += item; } else if (count > 0) { jsonStr += item; } else if (count === 0 && jsonStr === '') { jsonStr = item; } if (count === 0) { jsonStr = jsonStr .replace(getRegExp(replaceMap.comma, 'g'), ',') .replace(getRegExp(replaceMap.bkl, 'g'), '[') .replace(getRegExp(replaceMap.bkr, 'g'), ']') .replace(getRegExp(replaceMap.bsl, 'g'), '{') .replace(getRegExp(replaceMap.bsr, 'g'), '}'); var keyStr = (jsonStr.match(getRegExp('"[^"\\\n\r]*"')) || [])[0] || ''; var valueStr = jsonStr.replace(keyStr, '').replace(getRegExp('^:'),'').replace(getRegExp('\,$'), '') || ''; for (var sr = 0; sr < specialRandoms.length; sr++) { var item = specialRandoms[sr]; keyStr = keyStr.replace(getRegExp(item, 'g'), dedupFlags[sr]); valueStr = valueStr.replace(getRegExp(item, 'g'), dedupFlags[sr]); } var kv = JSON.parse('['+keyStr+','+valueStr+']'); callback(kv[0], kv[1]); jsonStr = ''; } } }
相关链接:
CSDN: https://blog.csdn.net/Avril_L/article/details/134882886
github:https://github.com/chenwei1012/for-each-object/tree/release-v1.0.0
gitee:https://gitee.com/chenwei1012/for-each-object/tree/master