首页 > 解决方案 > 替换 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);

在这里,我想替换$nameJohn打印 JSON,但不幸的是,这仅打印如下值而不是整个 JSON。

["name is John", "John is doctor", "unmarried"]

我哪里出错了,我该如何解决这个问题?

标签: javascript

解决方案


如果您想获得转换后的对象作为结果,请将更改后的值分配给原始对象:

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.entriesandObject.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);


推荐阅读