javascript - 替换 JSON 对象中的变量
问题描述
我正在编写 JavaScript 代码,我想在其中替换 JSON 对象中的字符串,我的代码如下。
var obj = {
"name": "name is $name",
"work": "$name is doctor",
"maritial status": "unmarried"
};
obj = Object.keys(obj).map(function(key, index) {
return (obj[key].includes('$name')) ? obj[key].replace('$name', 'John'): obj[key];
});
console.log(obj);
在这里,我想替换$name
并John
打印 JSON,但不幸的是,这仅打印如下值而不是整个 JSON。
["name is John", "John is doctor", "unmarried"]
我哪里出错了,我该如何解决这个问题?
解决方案
如果您想获得转换后的对象作为结果,请将更改后的值分配给原始对象:
var obj = {
"name": "name is $name",
"work": "$name is doctor",
"maritial status": "unmarried"
};
Object.keys(obj).forEach(function(key) {
if (obj[key].includes('$name')) {
obj[key] = obj[key].replace('$name', 'John');
}
});
console.log(obj);
或者使用Object.entries
andObject.fromEntries
映射到一个新对象:
var obj = {
"name": "name is $name",
"work": "$name is doctor",
"maritial status": "unmarried"
};
const newObj = Object.fromEntries(
Object.entries(obj).map(([key, val]) => [key, val.replace('$name', 'John')])
);
console.log(newObj);