【问题标题】:how to update array of nested json objects in the state?如何更新状态中的嵌套 json 对象数组?
【发布时间】:2019-08-28 14:28:52
【问题描述】:

我有一个 JSON 对象数组并想更新该状态

当前状态是

this.state.data  has [
  {
     "check_box_list": [
        {"name":"Courier Received by Investor","value":true},
        {"name":"Courier Sent By Investor","value":true},
        {"name":"Signed CA-Doc received","value":true},
        {"name":"Cheque/Payment Received","value":true},
        {"name":"Cancelled Cheque Received","value":true},
        {"name":"ID Proof Received","value":true},     
        {"name":"Address Proof Received","value":true},
        {"name":"KYC Received","value":true},
        {"name":"Signed CA pictures/scan received","value":true},
        {"name":"KRA Updated","value":true}
    ],
    "ca_doc_offline_comment":[""],
    "_id":"5ca89fcd0434ff4ba08b2d37",
    "user_id":"1589",
    "investor_name":"Anupam Mittal",
     "source":"Banner",
     "completed_check_box_list":false,
     "investment_information_id":1154
  }, 
 ...etc
]

想用过滤后的数据替换状态:

var filtered_data = [
  {
    check_box_list: [
      { name: "Courier Received by Investor", value: false },
      { name: "Courier Sent By Investor", value: false },
      { name: "Signed CA-Doc received", value: false },
      { name: "Cheque/Payment Received", value: false },
      { name: "Cancelled Cheque Received", value: false },
      { name: "ID Proof Received", value: false },
      { name: "Address Proof Received", value: false },
      { name: "KYC Received", value: false },
      { name: "Signed CA pictures/scan received", value: false },
      { name: "KRA Updated", value: false },
      { name: "KYC Updated", value: false }
    ],
    ca_doc_offline_comment: [""],
    _id: "5ca987f8198d13a54714789e",
    investor_name: "Samala Sumanth",
    completed_check_box_list: false
  },
  {
    check_box_list: [
      { name: "Courier Received by Investor", value: false },
      { name: "Courier Sent By Investor", value: false },
      { name: "Signed CA-Doc received", value: false },
      { name: "Cheque/Payment Received", value: false },
      { name: "Cancelled Cheque Received", value: false },
      { name: "ID Proof Received", value: false },
      { name: "Address Proof Received", value: false },
      { name: "KYC Received", value: false },
      { name: "Signed CA pictures/scan received", value: false },
      { name: "KRA Updated", value: false },
      { name: "KYC Updated", value: false }
    ],
    ca_doc_offline_comment: [""],
    _id: "5ca98801198d13a54714789f",
    investor_name: "Samala Sumanth",
    completed_check_box_list: false
  }
];

已尝试使用不变性帮助程序包和 Object Assign 似乎没有任何效果,请您帮帮我 提前致谢

【问题讨论】:

  • 更具体地询问您的问题?我敢打赌,很少有人愿意在json 中检查您要更新的字段。另外,请向我们展示您已经尝试过的操作。
  • @h1b9b 您好,关于通过深度克隆更新状态,您能相应地指导我吗?

标签: reactjs clone


【解决方案1】:

你可以这样做:

const clonedArray = JSON.parse(JSON.stringify(myArray))

然后使用map更新clonedArray

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 2020-04-27
    • 2021-12-23
    • 2020-12-08
    • 1970-01-01
    相关资源
    最近更新 更多