奇葩的 JavaScript 输出格式需求
本文讨论一个奇葩的 javascript 输出格式需求:将一个对象转化为特定文本格式,其中文本格式由接口决定。
问题涉及到动态文本格式,该格式无法事先确定。因此,常规的模板字符串方法无法满足需求。解决方案在于使用正则表达式替换(replace),它可以匹配和替换字符串中的指定模式。
以下代码演示了解决方案:
立即学习“Java免费学习笔记(深入)”;
let data = { name: '寅春树', sex: "男", age: 25, address: "中国洛阳" }; let str = '{name},{sex},{age}'; let result = str.replace(/{(w+)}/g, (match, key) => { if (data.hasOwnProperty(key)) { return data[key]; } return match; });
这段代码使用正则表达式 /s?(w+)s?/g 匹配模板字符串中的所有变量名 {变量名},并使用箭头函数 (match, key) => {…} 作为回调函数。回调函数检查 data 对象中是否存在匹配的变量名,如果存在,则用对象值替换它;否则,返回原始匹配。
最终,result 将包含格式化为 寅春树,男25 的字符串。这个解决方案的优点在于它的灵活性,它可以处理任何由接口提供的动态文本格式。