使用map优化for循环
微信公众号:前端程序猿之路
关注可了解更多的前端知识,反馈问题或建议,请公众号留言。
如果你觉得公众号内容对你有帮助,欢迎关注并转载
之前做的一个东西是点击一键升级按钮,修改后台返回的json数据里面某个对应的key:value值,没有优化钱使用了for循环完成,优化后使用map完成,因为for循环随着json数据的多少循环的次数不断增加,效率比较低,后面用了map直接进行了替换,简单了代码也优化了效率
没有优化前:
upGrade() {let contentData = JSON.parse(this.json);let transferData;const transfer = (data) => {let regArr = [{'reg': 'v-layout', 'value': 'v-composite'},{'reg': 'v-basedata', 'value': 'v-input'},{'reg': 'v-string', 'value': 'v-input'},{'reg': 'v-date', 'value': 'v-input'},{'reg': 'v-enumdata', 'value': 'v-input'},{'reg': 'v-decimal', 'value': 'v-input'},{'reg': 'v-memo', 'value': 'v-input'},{'reg': 'v-ref-bill-list', 'value': 'v-input'},];for (let i = 0; i < regArr.length; i++) {if (data.type === regArr[i].reg) {data.type = regArr[i].value;if (i === 6) {var key = 'inputType';var value = 'v-memo';data[key] = value;}}}let childNode = data.children;if (childNode) {for (let m = 0; m < childNode.length; m++) {transfer(childNode[m]);}}transferData = JSON.stringify(data, null, ' ');};transfer(contentData);this.json = transferData;},
优化后:
upGrade() {let resultMap = Object.create(null);resultMap['v-layout'] = 'v-composite';resultMap['v-basedata'] = 'v-input';resultMap['v-string'] = 'v-input';resultMap['v-date'] = 'v-input';resultMap['v-enumdata'] = 'v-input';resultMap['v-decimal'] = 'v-input';resultMap['v-memo'] = 'v-input';resultMap['v-ref-bill-list'] = 'v-input';resultMap['v-bill-ref'] = 'v-input';resultMap['v-boolean'] = 'v-input';let specialMap = Object.create(null);specialMap['v-memo'] = true;specialMap['v-bill-ref'] = true;specialMap['v-ref-bill-list'] = true;specialMap['v-boolean'] = true;specialMap['v-decimal'] = true;specialMap['v-string'] = true;specialMap['v-date'] = true;let contentData = JSON.parse(this.json);let transferData;const transfer = (data) => {let specialVal = specialMap[data.type];if (specialVal) data.inputType = data.type;let resultVal = resultMap[data.type];if (resultVal) data.type = resultVal;let childNode = data.children;if (childNode) {for (let m = 0; m < childNode.length; m++) {transfer(childNode[m]);}}transferData = JSON.stringify(data, null, ' ');};transfer(contentData);this.json = transferData;this.$Message.info('升级成功');},
欢迎关注公众号,有你想要的前端知识:
















