【问题标题】:traverse json using options parent id使用选项父ID遍历json
【发布时间】:2020-07-24 08:24:35
【问题描述】:
    [
      {
        "id": "name",
        "model": "name",
        "name": "name",
        "label": "Name",
        "placeholder": "Enter your name",
        "required": "yes",
        "inputType": "text",
        "options": [],
        "objectType":"parent",
        "parentId": ""
      },
      {
        "id": "existingcustomer",
        "name": "ExistingCustomer",
        "label": "Exisiting Customer",
        "placeholder": "",
        "required": "yes",
        "inputType": "radio",
        "objectType":"parent",
        "options": [
          {"label": "Yes", "name": "eCustomer","optionValue": "no","id": "existingcustomer_yes","objectType": "parent"},
          {"label": "No", "name": "eCustomer","optionValue":"yes","id": "existingcustomer_no","objectType": "parent"}
        ],
        "parentId": ""
      },
      {
        "id": "existingcustomername",
        "name": "existingcustomername",
        "label": "Hello Existing Customer Please Enter Your Name",
        "placeholder": "Enter You Name",
        "required": "yes",
        "inputType": "text",
        "objectType": "child",
        "options": [],
        "parentId": "existingcustomer_yes"
      },
      {
        "id": "selectpackage",
        "name": "selectpackage",
        "label": "Hello Existing Customer, Select Your Package Please",
        "placeholder": "",
        "required": "yes",
        "inputType": "select",
        "objectType": "parent",
        "options": [
          {"label": "Package 1", "name": "select_package","optionValue": "Package 1","id": "selectpackage_package1", "objectType": "parent"},
          {"label": "Package 2", "name": "select_package","optionValue":"Package 2","id": "selectpackage_package2", "objectType": "parent"}
        ],
        "parentId": "existingcustomer_yes"
      },
      {
        "id": "selectpackage1",
        "name": "selectpackage1",
        "label": "Hello Existing Customer, Select Your Package 1 Details",
        "placeholder": "",
        "required": "yes",
        "inputType": "select",
        "objectType": "child",
        "options": [
          {"label": "Package 1.1", "name": "select_package","optionValue": "Package 1","id": "selectpackage1_package11","objectType": "child"},
          {"label": "Package 1.2", "name": "select_package","optionValue":"Package 2","id": "selectpackage1_package12","objectType": "child"}
        ],
        "parentId": "selectpackage_package1"
      },
      {
        "id": "selectpackage2",
        "name": "selectpackage2",
        "label": "Hello Existing Customer, Select Your Package 2 Details",
        "placeholder": "",
        "required": "yes",
        "inputType": "select",
        "objectType": "child",
        "options": [
          {"label": "Package 2.1", "name": "select_package","optionValue": "Package 1","id": "selectpackage2_package21",  "objectType": "child"},
          {"label": "Package 2.2", "name": "select_package","optionValue":"Package 2","id": "selectpackage2_package22",  "objectType": "child"}
        ],
        "parentId": "selectpackage_package2"
      },
      {
        "model": "newcustomername",
        "name": "newcustomername",
        "label": "Hello New Customer Please Enter Your Name",
        "placeholder": "Enter You Name",
        "required": "yes",
        "inputType": "text",
        "objectType": "child",
        "options": [],
        "parentId": "existingcustomer_no"
      }
    ]

我想让它像下面那样使用 javascript 循环进行更改,请帮助我解决这个问题 当我尝试这个时,它显示无限循环 我想让它像下面使用javascript循环一样改变它请帮我解决这个问题 当我尝试这个时,它显示无限循环 我想让它像下面使用javascript循环一样改变它请帮我解决这个问题 当我尝试这个时,它显示无限循环 我想让它像下面使用javascript循环一样改变它请帮我解决这个问题 当我尝试这个时,它显示无限循环 我想让它像下面使用javascript循环一样改变它请帮我解决这个问题 当我尝试这个时,它显示无限循环 我想让它像下面使用javascript循环一样改变它请帮我解决这个问题 当我尝试这个时,它显示无限循环我想让它像下面使用javascript循环一样改变它请帮我解决这个问题 当我尝试这个时,它显示无限循环 我想让它像下面使用javascript循环一样改变它请帮我解决这个问题 当我尝试这个时,它显示无限循环 我想让它像下面使用javascript循环一样改变它请帮我解决这个问题 当我尝试这个时,它显示无限循环

 {
        "id": "name",
        "model": "name",
        "name": "name",
        "label": "Name",
        "placeholder": "Enter your name",
        "required": "yes",
        "inputType": "text",
        "options": [],
        "objectType":"parent",
        "parentId": ""
      },
    {
        "id": "existingcustomer",
        "name": "ExistingCustomer",
        "label": "Exisiting Customer",
        "placeholder": "",
        "required": "yes",
        "inputType": "radio",
        "objectType":"parent",
        "options": [
          {"label": "Yes", "name": "eCustomer","optionValue": "no","id": "existingcustomer_yes","objectType": "parent",childJson:"here i want to show all child having parent id = this option id"},
          {"label": "No", "name": "eCustomer","optionValue":"yes","id": "existingcustomer_no","objectType": "parent"}
        ],
        "parentId": ""
      }

【问题讨论】:

  • 在选项中添加一个 id 等于 parentId 的 childJson 就是你想要的?
  • 是的,先生,我只想要这个,请帮帮我,谢谢

标签: javascript arrays json object


【解决方案1】:

看看这是否有帮助: 使用mapreducefilter

let arr = [
  {
    "id": "name",
    "model": "name",
    "name": "name",
    "label": "Name",
    "placeholder": "Enter your name",
    "required": "yes",
    "inputType": "text",
    "options": [],
    "objectType":"parent",
    "parentId": ""
  },
  {
    "id": "existingcustomer",
    "name": "ExistingCustomer",
    "label": "Exisiting Customer",
    "placeholder": "",
    "required": "yes",
    "inputType": "radio",
    "objectType":"parent",
    "options": [
      {"label": "Yes", "name": "eCustomer","optionValue": "no","id": "existingcustomer_yes","objectType": "parent"},
      {"label": "No", "name": "eCustomer","optionValue":"yes","id": "existingcustomer_no","objectType": "parent"}
    ],
    "parentId": ""
  },

  {
    "model": "newcustomername",
    "name": "newcustomername",
    "label": "Hello New Customer Please Enter Your Name",
    "placeholder": "Enter You Name",
    "required": "yes",
    "inputType": "text",
    "objectType": "child",
    "options": [],
    "parentId": "existingcustomer_no"
  }
];


let {result, toRemove} = arr.reduce((acc, cur) => {
  cur.options = cur.options.map(itemObj => {
    const childs = arr.filter(arrObj => arrObj.parentId === itemObj.id);
    itemObj.childJson = childs;    
    acc.toRemove = [...acc.toRemove, ...childs.map(item => item.parentId)]
    return itemObj
  })
  acc.result.push(cur);
  return acc;
}, {result:[], toRemove:[]})

result = result.filter(item => !toRemove.includes(item.parentId))

console.log(result);

【讨论】:

  • 我会试试这个谢谢先生,我可以给你 Skype 地址或 facebook 或 watsapp 任何东西吗??
  • 您可以在此处发布您的问题。我确信您的上述评论一定违反了社区准则。
  • 好的先生,我也想在设置为选项子时减少 json
  • 应删除子对象设置
  • 检查我的答案。转到参考链接以了解有关所使用方法的更多信息。
猜你喜欢
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
相关资源
最近更新 更多