Tengo un objeto con detalles: nombre, correo electrónico, contacto con identificación única
{ email_IcWDC6iyNzsQe9sPss4Yy: "xyz@gmail.com" email_QVXeOX1vijCtpx8mdD662: "abc@gmail.com" mobile_IcWDC6iyNzsQe9sPss4Yy: "223" mobile_QVXeOX1vijCtpx8mdD662: "122" name_IcWDC6iyNzsQe9sPss4Yy: "mp" name_QVXeOX1vijCtpx8mdD662: "pp" } por ejemplo: name_QVXeOX1vijCtpx8mdD662 contiene name_UniqueID pero sigue siendo el mismo para un conjunto de formularios para nombre, correo electrónico, móvil. Estos valores se toman de tantos formularios generados en la interfaz, el formulario tiene una identificación única y eso se ha pasado a sus campos, entonces, ¿cómo puedo hacer una nueva colección de objetos que contengan un nombre, correo electrónico, móvil para una identificación única en particular? .
example: [ { id: "IcWDC6iyNzsQe9sPss4Yy" name: "mp", email: "", mobile_no: "", }, { id: "QVXeOX1vijCtpx8mdD662" name: "pp", email: "", mobile_no: "", }, ]Una forma de hacerlo:
const d = { email_IcWDC6iyNzsQe9sPss4Yy: "xyz@gmail.com", email_QVXeOX1vijCtpx8mdD662: "abc@gmail.com", mobile_IcWDC6iyNzsQe9sPss4Yy: "223", mobile_QVXeOX1vijCtpx8mdD662: "122", name_IcWDC6iyNzsQe9sPss4Yy: "mp", name_QVXeOX1vijCtpx8mdD662: "pp" }; const result = Object.values( Object.entries(d).reduce((acc, [k, v]) => { const [field, id] = k.split("_", 2); if (!acc[id]) acc[id] = {id}; acc[id][field] = v; return acc; }, {}) ); console.log(result);No es muy eficiente, pero podría ser un sol:
const parentObj = { email_IcWDC6iyNzsQe9sPss4Yy: "xyz@gmail.com", email_QVXeOX1vijCtpx8mdD662: "abc@gmail.com", mobile_IcWDC6iyNzsQe9sPss4Yy: "223", mobile_QVXeOX1vijCtpx8mdD662: "122", name_IcWDC6iyNzsQe9sPss4Yy: "mp", name_QVXeOX1vijCtpx8mdD662: "pp" }; let resultArr = []; for (const key in parentObj) { const template = { id:"", name:"", email:"", mobile:"", }; let [prop,uid] = key.split("_"); if(!resultArr[uid]){ template.id = uid; resultArr[uid] = template; } resultArr[uid][prop] = parentObj[key]; } console.log(resultArr);puede usar dependencias llamadas UUID o NanoId de NPM. estas dependencias se pueden usar para una identificación única. para aplicarlo usa:
const idVar = uuidv4() || nanoid(); const obj = { ['id_' + idVar]: 'abcdefg2312', ['name_' + idVar]: "pp", ['email_' + idVar]: "", ['mobileNo_' + idVar]: "", }