首页 > 解决方案 > 我如何在反应中用映射函数内部的扩展替换对象内部的关键选项

问题描述

我有以下代码正在更改 inputType multipleChoice 对象中的选项键的值,主对象称为卡,我需要将状态设置为 newTasksIdsArray

我希望 multipleChoice.options 具有 newArray 值,以便我可以将状态设置为它们

更新:更多信息

我想我想说的是我需要一个变量来 setlocalstroage 最终成为整个对象,并将 optiosn 数组替换为我生成的 newTasksIdsArray 中的任何内容,只是不包括在内,因为它可能不需要

谢谢!

我需要我的最终结果是

[
   {
      "inputType":"multipleChoice",
      "uniId":"bzR7bpwzjMxcBEdSF",
      "label":"Preferred Method of Contact",
      "value":"2813348004",
      "multipleChoice":{
         "options":NEW ARRAY GOES HERE
      }
   },
   ...
   KEEP REST OF OBJECT
]

let test = [];

    cards.map((card) => {
      if (card.inputType === "multipleChoice") {
        //console.log(card);
        card.multipleChoice.options = newTasksIdsArray;
        test.push(...cards);
      }
    });

    console.log(test);

    setCards(test)

    //update localstorage with test as well

这是卡片对象

[
   {
      "inputType":"multipleChoice",
      "uniId":"bzR7bpwzjMxcBEdSF",
      "label":"Preferred Method of Contact",
      "value":"2813348004",
      "multipleChoice":{
         "options":[
            {
               "uniId":"gJ8N6sAJrZZvCcPkp",
               "label":"Cell Phone",
               "checked":false
            },
            {
               "uniId":"Ha9rmssmRkGzpRTn7",
               "label":"Email",
               "checked":true
            }
         ]
      }
   },
   {
      "inputType":"shortText",
      "uniId":"AkvioWe6D2ahgDCbW",
      "label":"First Name:",
      "value":"Kanye",
      "multipleChoice":{
         
      }
   },
   {
      "inputType":"phoneNumber",
      "uniId":"xwbBBnT2D69QJHHuL",
      "label":"Cell Phone Number",
      "value":"2813348004",
      "multipleChoice":{
         
      }
   },
   {
      "inputType":"email",
      "uniId":"62fDs7JtTF4MxMvww",
      "label":"Work Email",
      "value":"kanye@usa.gov",
      "multipleChoice":{
         
      }
   },
   {
      "inputType":"address",
      "uniId":"pKAwHmRJKCcKMz8LN",
      "label":"Home Address",
      "value":"123 White House Avenue",
      "multipleChoice":{
         
      }
   },
   {
      "inputType":"dropDown",
      "uniId":"K3o689k8G2ZrWEfQc",
      "label":"How did you find us?",
      "value":"2813348004",
      "dropDown":{
         "uniId":"3r9gzPXXjidq9p4fw",
         "options":[
            {
               "uniId":"7hGYT4jv89WxFveaj",
               "label":"Google"
            },
            {
               "uniId":"J2K2W6P4BR7ZEGEao",
               "label":"Referral"
            }
         ]
      },
      "multipleChoice":{
         
      }
   }
]

标签: javascriptreactjs

解决方案


我猜卡片状态已经通过重新分配 map 函数中的值来更新,所以这可以很好地存储到 localstorage

cards.map((card) => {
      if (card.inputType === "multipleChoice") {
        card.multipleChoice.options = newTasksIdsArray;
      }
    });

    window.localStorage.setItem("inputs", JSON.stringify(cards)

推荐阅读