Tengo una matriz de objetos debajo y tengo que crear una nueva matriz de objetos basada en las condiciones a continuación
si la identificación no está vacía y la identificación de registro está vacía, inserte este objeto en la matriz de resultados.
si la identificación de registro no está vacía y la identificación está vacía, entonces asigne la identificación de registro a la identificación e inserte este objeto en la matriz de resultados.
si la identificación no está vacía y la identificación de registro no está vacía, entonces
a. Verifique que la identificación y la identificación de registro sean las mismas, luego asigne la identificación de registro a la identificación, inserte este objeto en la matriz de resultados.
b. la identificación y la identificación de registro no son iguales, cree dos objetos. Uno con "id": 1 y otro con asignación de identificación de registro a id ("id": 100)
var userData =[{ "id": 1, "name": "abcd", "place":"xyz", "registrationid": 100 }]; var result = []; userData.forEach( (element) => { if(element.id !="" && element.registrationid ==""){ console.log("1"); result.push(element); } else if(element.registrationid !="" && element.id ==""){ console.log("2"); element.id = element.registrationid; result.push(element); } else if(element.registrationid !="" && element.id !=""){ console.log("3"); if(element.id == element.registrationid){ console.log("4"); element.id = element.registrationid; result.push(element); }else if(element.id != element.registrationid){ console.log("5"); result.push(element) element.id = element.registrationid; result.push(element) } } }); console.log(result)La matriz de resultados de salida esperada debería devolver
[ { "id": 1, "name": "abcd", "place":"xyz", "registrationid": 100 }, { "id": 100, "name": "abcd", "place":"xyz", "registrationid": 100 }, ];Pasé por esto, pero no pude tener ninguna idea, por favor, ayúdenme, muchachos.
Cree una copia en el paso 3b:
var userData = [{ "id": 1, "name": "abcd", "place": "xyz", "registrationid": 100 }]; var result = []; userData.forEach((element) => { if (element.id != "" && element.registrationid == "") { console.log("1"); result.push(element); } else if (element.registrationid != "" && element.id == "") { console.log("2"); element.id = element.registrationid; result.push(element); } else if (element.registrationid != "" && element.id != "") { console.log("3"); if (element.id == element.registrationid) { console.log("4"); result.push(element); } else if (element.id != element.registrationid) { console.log("5"); result.push({ ...element }) element.id = element.registrationid; result.push(element) } } }); console.log(result) La asignación en 3a no tiene sentido. Lo quité. prefiero flatMap
var userData = [{ "id": 1, "name": "abcd", "place": "xyz", "registrationid": 100 }]; var result = userData.flatMap((element) => { if (element.id != "" && element.registrationid == "") { console.log("1"); return element; } else if (element.registrationid != "" && element.id == "") { console.log("2"); element.id = element.registrationid; return element; } else if (element.registrationid != "" && element.id != "") { console.log("3"); if (element.id == element.registrationid) { console.log("4"); return element; } else if (element.id != element.registrationid) { console.log("5"); const oldId = element.id; element.id = element.registrationid; return [{ ...element, id: oldId }, element]; } } }); console.log(result)Por favor intenta lo siguiente
const userData = [{ "id": 1, "name": "abcd", "place": "xyz", "registrationid": 100 }]; const result = []; userData.forEach((data) => { if (data.id && !data.registrationid) { result.push(data); } if (!data.id && data.registrationid) { const output = { ...data, id: data.registrationid } result.push(output) } if (data.id && data.registrationid) { if (data.id === data.registrationid) { result.push(data); } else { const obj1 = {...data, id: 1}; const obj2 = {...data, id: 100} result.push(obj1, obj2) } } }); console.log(result);Podrías crear un nuevo objeto si quieres hacer este negocio
var userData = [ { id: 1, name: "abcd", place: "xyz", registrationid: 100, }, ]; var result = []; userData.forEach((element) => { let newEl; if (element.id != "" && element.registrationid == "") { newEl = { ...element }; result.push(newEl); } else if (element.registrationid != "" && element.id == "") { newEl = { ...element, id: element.registrationid }; result.push(newEl); } else if (element.registrationid != "" && element.id != "") { result.push(element); if (element.id != element.registrationid) { newEl = { ...element, id: element.registrationid }; result.push(newEl); } } }); console.log(result);