为了账号安全,请及时绑定邮箱和手机立即绑定

在reactJS中转换嵌套的json对象?

在reactJS中转换嵌套的json对象?

紫衣仙女 2022-07-08 10:25:21
我一直在玩 json 对象和使用 ReactJS。由变量“res”表示的 json 对象之一。如何将“res”转换为“b”。我还从 api 获取我的 json 对象“res”。我已经通过此链接解决了我的问题:https ://codesandbox.io/s/epic-leaf-sznhx?file=/src/App.jsconst [res, setResult] = useState();  useEffect(() => {    (async () => {      axios.get("https://corona.lmao.ninja/v2/countries").then(response => {        setResult(response.data);      });    })();  }, []);我如何转换这个:        const a =         {          "menu_1": {            "id": "1",            "menuitem": [{              "value": "0",              "onclick": "0()"            }, {              "value": "0",              "onclick": "0()"            }]          },          "menu_2": {            "id": "2",            "menuitem": [{              "value": "2",              "onclick": "2()"            }]          }        }进入这个 json 对象:const b =    {      "popup": {        "menuitem": [          {            "value": "0",            "onclick": "0()"          },          {            "value": "0",            "onclick": "0()"          },          {            "value": "2",            "onclick": "2()"          }        ]      }    }
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

您可以执行以下操作:


const a = {

  menu_1: {

    id: "1",

    menuitem: [{

      value: "1",

      onclick: "1()",

    }, ],

  },

  menu_2: {

    id: "2",

    menuitem: [{

      value: "2",

      onclick: "2()",

    }, ],

  },

};


let b = Object.keys(a).reduce(

  (p, c) => {

    for (let item of a[c].menuitem) {

      p.popup.menuitem.push(item);

    }

    return p;

  }, {

    popup: {

      menuitem: []

    }

  }

);


console.log(b);

我假设该对象在数组中a可能有多个menuitem



查看完整回答
反对 回复 2022-07-08
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您可以通过这种方式使用 reduce


const a = {

  "menu_1": {

    "id": "1",

    "menuitem": [{

      "value": "0",

      "onclick": "0()"

    }, {

      "value": "0",

      "onclick": "0()"

    }]

  },

  "menu_2": {

    "id": "2",

    "menuitem": [{

      "value": "2",

      "onclick": "2()"

    }]

  }

}


const res = Object.values(a).reduce((all, {

  menuitem

}) => {

  all.popup.menuitem = [...all.popup.menuitem, ...menuitem]


  return all

}, {

  popup: {

    menuitem: []

  }

})


console.log(res)


查看完整回答
反对 回复 2022-07-08
  • 2 回答
  • 0 关注
  • 218 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号