Javascript 用新名称替换所有对象属性

Javascript 用新名称替换所有对象属性,javascript,arrays,typescript,object,Javascript,Arrays,Typescript,Object,我想将所有对象属性标签替换为属性名称文本 鉴于: [ { "value": "45a8", "label": "45A8", "children": [ { "value": "45a8.ba08", "label": "BA08",

我想将所有对象属性
标签
替换为属性名称
文本

鉴于:

[
  {
    "value": "45a8",
    "label": "45A8",
    "children": [
      {
        "value": "45a8.ba08",
        "label": "BA08",
        "children": [
          {
            "value": "45a8.ba08.45a8",
            "label": "45A8"
          }
        ],
        "checked": false
      }
    ]
  },
  ...
]
需要:

[
  {
    "value": "45a8",
    "text": "45A8",
    "children": [
      {
        "value": "45a8.ba08",
        "text": "BA08",
        "children": [
          {
            "value": "45a8.ba08.45a8",
            "text": "45A8"
          }
        ],
        "checked": false
      }
    ]
  },
  ...
]

您可以首先使用字符串化数据,然后替换字符串。最后,使用以下命令解析字符串:

var数据=[
{
“值”:“45a8”,
“标签”:“45A8”,
“儿童”:[
{
“值”:“45a8.ba08”,
“标签”:“BA08”,
“儿童”:[
{
“值”:“45a8.ba08.45a8”,
“标签”:“45A8”
}
],
“选中”:false
}
]
}
];
data=JSON.parse(JSON.stringify(data.replaceAll)('label','text');

控制台日志(数据)
您也可以使用
递归来实现这一点。可能是这样的:

const nestArr=[{“value”:“45a8”,“label”:“45a8”,“children”:[{“value”:“45a8.ba08”,“label”:“ba08”,“children”:[{“value”:“45a8.ba08.45a8”,“label”:“45a8”}],“checked”:“false}];
changeLabelToText=arr=>{
返回arr.map(({label,…rest})=>{
if(rest.children)rest.children=changeLabelToText(rest.children);
返回{text:label,…rest}
})
};

console.log(changelabletext(nestArr))您还可以浏览键并找到标签键。获取其值将其分配给新键(即文本),并删除旧键(即标签)

let data = [
      {
        "value": "45a8",
        "label": "45A8",
        "children": [
          {
            "value": "45a8.ba08",
            "label": "BA08",
            "children": [
              {
                "value": "45a8.ba08.45a8",
                "label": "45A8"
              }
            ],
            "checked": false
          }
        ]
      }
    ]
    
    for (const key in data.keys()){
      if(key === "label"){
        data.text = data[key]
        delete data.key
      }
    }

我已经试过了,但这并没有改变子元素的属性。@mrks,使用
replaceAll()
而不是
replace()
,请检查更新的答案:)感谢快速更改,但是
replaceAll
在类型
string
上不存在。@mrks,您可以在更新的答案中使用regex尝试第二种解决方案:)