преобразовать json из нескольких родительских идентификаторов в одного родителя в javascript - PullRequest
0 голосов
/ 04 августа 2020

У меня проблема, я хочу преобразовать несколько parentId JSON в single parentId JSON вот пример нескольких родительских json, которые я предоставлю своей функции js.

[{
    "id": "1",
    "name": "first_name",
    "label": "First Name",
    "placeholder": "Enter Your First Name",
    "required": "yes",
    "inputType": "text",
    "options": [],
    "parentId": "",
    "isPost": true
  },
  {
    "id": "4",
    "name": "ready_to_provide_email_address",
    "label": "Ready to Provide Email Address",
    "placeholder": "Enter Your Phone Number",
    "required": "yes",
    "inputType": "radio",
    "options": [{
        "label": "Yes",
        "name": "ready_to_provide_email",
        "value": "Yes",
        "id": "5"
      },
      {
        "label": "No",
        "name": "ready_to_provide_email",
        "value": "No",
        "id": "6"
      }
    ],
    "parentId": "",
    "isPost": false
  },
  {
    "id": "7",
    "name": "email",
    "label": "Email",
    "placeholder": "Enter Your Email",
    "required": "yes",
    "inputType": "text",
    "options": [],
    "parentId": ["5", "6"],
    "isPost": true
  }
]

И это единственный родительский json, который я хочу выводить.

[{
    "id": "1",
    "name": "first_name",
    "label": "First Name",
    "placeholder": "Enter Your First Name",
    "required": "yes",
    "inputType": "text",
    "options": [],
    "parentId": "",
    "isPost": true
  },
  {
    "id": "4",
    "name": "ready_to_provide_email_address",
    "label": "Ready to Provide Email Address",
    "placeholder": "Enter Your Phone Number",
    "required": "yes",
    "inputType": "radio",
    "options": [{
        "label": "Yes",
        "name": "ready_to_provide_email",
        "value": "Yes",
        "id": "5"
      },
      {
        "label": "No",
        "name": "ready_to_provide_email",
        "value": "No",
        "id": "6"
      }
    ],
    "parentId": "",
    "isPost": false
  }, {
    "id": "7",
    "name": "email",
    "label": "Email",
    "placeholder": "Enter Your Email",
    "required": "yes",
    "inputType": "text",
    "options": [],
    "parentId": "5",
    "isPost": true
  },
  {
    "id": "8",
    "name": "email",
    "label": "Email",
    "placeholder": "Enter Your Email",
    "required": "yes",
    "inputType": "text",
    "options": [],
    "parentId": "6",
    "isPost": true
  }
]

Примечание: object.option.id - это родительский идентификатор элемента в моем случае. Пожалуйста, помогите мне. Заранее большое спасибо.

Ответы [ 2 ]

1 голос
/ 04 августа 2020
let result = input.map(a => a.id);
        var max_of_array = Math.max.apply(Math, result);
        var newArr = [];
        for (var i in input) {
            var first = true;
            let objCopy = Object.assign({}, input[i].parentId);
            input[i]=Object.assign(input[i],{"initObjectPos":i});
            if(input[i].parentId.length == 0){
                input[i].parentId="";
            }
            for (var x in objCopy) {
                var y = input[i];

                if (!first) {
                    y = Object.assign({}, y);
                    max_of_array++;
                    y.id = max_of_array.toString();
                    newArr.push(y);
                }
                y.parentId = objCopy[x];
                first = false;
            }
        }
        var output = input.concat(newArr);
        return output;
0 голосов
/ 04 августа 2020

var input = [{
    "id": "1",
    "name": "first_name",
    "label": "First Name",
    "placeholder": "Enter Your First Name",
    "required": "yes",
    "inputType": "text",
    "options": [],
    "parentId": "",
    "isPost": true
  },
  {
    "id": "4",
    "name": "ready_to_provide_email_address",
    "label": "Ready to Provide Email Address",
    "placeholder": "Enter Your Phone Number",
    "required": "yes",
    "inputType": "radio",
    "options": [{
        "label": "Yes",
        "name": "ready_to_provide_email",
        "value": "Yes",
        "id": "5"
      },
      {
        "label": "No",
        "name": "ready_to_provide_email",
        "value": "No",
        "id": "6"
      }
    ],
    "parentId": "",
    "isPost": false
  },
  {
    "id": "7",
    "name": "email",
    "label": "Email",
    "placeholder": "Enter Your Email",
    "required": "yes",
    "inputType": "text",
    "options": [],
    "parentId": ["5", "6"],
    "isPost": true
  }
];

let result = input.map(a => a.id);
var max_of_array = Math.max.apply(Math, result);
var newArr = [];

for (var i in input) {
  var first = true;
  let objCopy = Object.assign({}, input[i].parentId);
  for (var x in objCopy) {
    var y = input[i];
    if (!first) {
      y = Object.assign({}, y);
      max_of_array++;
      y.id = max_of_array.toString();
      newArr.push(y);
    }
    y.parentId = objCopy[x];
    first = false;
  }
}

var output = input.concat(newArr);
console.log(output);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...