代码之家  ›  专栏  ›  技术社区  ›  mrks

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

  •  -1
  • mrks  · 技术社区  · 4 年前

    label 属性名称 text .

    鉴于:

    [
      {
        "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
          }
        ]
      },
      ...
    ]
    
    3 回复  |  直到 4 年前
        1
  •  2
  •   Mamun    4 年前

    您可以首先用 JSON.stringify() JSON.parse() :

    var data = [
      {
        "value": "45a8",
        "label": "45A8",
        "children": [
          {
            "value": "45a8.ba08",
            "label": "BA08",
            "children": [
              {
                "value": "45a8.ba08.45a8",
                "label": "45A8"
              }
            ],
            "checked": false
          }
        ]
      }
    ];
    
    data = JSON.parse(JSON.stringify(data).replaceAll('"label"', '"text"'));
    console.log(data);

    更新:

    var data = [
      {
        "value": "45a8",
        "label": "45A8",
        "children": [
          {
            "value": "45a8.ba08",
            "label": "BA08",
            "children": [
              {
                "value": "45a8.ba08.45a8",
                "label": "45A8"
              }
            ],
            "checked": false
          }
        ]
      }
    ];
    var find = '"label"';
    var re = new RegExp(find, 'g');
    data = JSON.parse(JSON.stringify(data).replace(re, '"text"'));
    console.log(data);
        2
  •  0
  •   Rajneesh    4 年前

    也可以使用 recursion . 可能是这样的:

    const nestArr=[ { "value": "45a8", "label": "45A8", "children": [ { "value": "45a8.ba08", "label": "BA08", "children": [ { "value": "45a8.ba08.45a8", "label": "45A8" } ], "checked": false } ] }];
    
    changeLabelToText=arr=>{
        return arr.map(({label,...rest})=>{
          if(rest.children) rest.children = changeLabelToText(rest.children);
          return {text:label, ...rest}
        })
    };
    
    console.log(changeLabelToText(nestArr));
        3
  •  0
  •   nain12    4 年前
    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"){
        object.text = object[key]
        delete object.key
      }
    }