下面是拿到的数据,
let data={name:'寅春树',sex:"男",age:25,address:"中国洛阳"}
下面的是需要输出的文本格式 {name},{sex}{age}
文本格式是通过接口拿到的,我现在想输出以文本格式那样的格式,也就是寅春树,男25
我考虑用‘模板字符串’但发现不行,因为格式是接口后来拿到的,没办法直接用模板字符串,有大神有办法吗?
文本格式预先不知道,是接口拿的,这只是一个格式,也可能是其它格式,这种情况下怎么按格式输出对应的值。
下面是拿到的数据,
let data={name:'寅春树',sex:"男",age:25,address:"中国洛阳"}
下面的是需要输出的文本格式 {name},{sex}{age}
文本格式是通过接口拿到的,我现在想输出以文本格式那样的格式,也就是寅春树,男25
我考虑用‘模板字符串’但发现不行,因为格式是接口后来拿到的,没办法直接用模板字符串,有大神有办法吗?
文本格式预先不知道,是接口拿的,这只是一个格式,也可能是其它格式,这种情况下怎么按格式输出对应的值。
那就直接 replace
function replacer(context, template) {
Object.keys(context).forEach((key) => {
template = template.replaceAll(`{${key}}`, context[key])
})
return template
}
const data={ name:'寅春树', sex:"男", age:25, address:"中国洛阳" }
const result = replacer(data, '{name},{sex}{age}') // '寅春树,男25'
用字符串替换
const data = {name:'寅春树',sex:"男",age:25,address:"中国洛阳"}
let str = `{name},{sex}{age}`
str = str.replace("{name}", data.name);
str = str.replace("{sex}", data.sex);
str = str.replace("{age}", data.age);
console.log('str', str); // '寅春树,男25'
实际使用中可以遍历data中的key,动态替换
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;
});
可以试试 https://github.com/jhonmart/python-format-js
import format from "python-format-js";
const template = `{name},{sex}{age}`;
const data = { name: "寅春树", sex: "男", age: 25, address: "中国洛阳" };
const text = format(template, data);
console.log(text === "寅春树,男25"); // true
27 回答12.8k 阅读
8 回答3.4k 阅读✓ 已解决
6 回答963 阅读✓ 已解决
5 回答5.1k 阅读✓ 已解决
3 回答3.3k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
3 回答1.7k 阅读