Tengo estos objetos de JavaScript
var oldObject=[{ id:1, key:'name', fiendSize:'6', fromPlaceHolder:'', fieldInstruction:'', filedType:'input', lable:"Single Line ", type:'text', formValidation: { required:false } }]; var newObject= { id:1, key:'name', fiendSize:'12', fromPlaceHolder:'Enter Your Name', fieldInstruction:'please Enter string only', filedType:'input', lable:"Single Line ", type:'text', formValidation: { required:true } };Necesito reemplazar/actualizar el valor de oldObject con el valor de newObject con la misma identificación.
Así que aquí está el resultado que quiero obtener:
var oldObject = [{ id:1, key:'name', fiendSize:'12', fromPlaceHolder:'Enter Your Name', fieldInstruction:'please Enter string only', filedType:'input', lable:"Single Line ", type:'text', formValidation: { required:true }]¿Cómo puedo implementarlo usando JavaScript en react js?
Puedes usar Object.entries() como:
var oldObject = [{ id: 1, key: 'name', fiendSize: '6', fromPlaceHolder: '', fieldInstruction: '', filedType: 'input', lable: "Single Line ", type: 'text', formValidation: { required: false } }]; var newObject = { id: 1, key: 'name', fiendSize: '12', fromPlaceHolder: 'Enter Your Name', fieldInstruction: 'please Enter string only', filedType: 'input', lable: "Single Line ", type: 'text', formValidation: { required: true } }; let result = [{}]; for (const [key, value] of Object.entries(oldObject[0])) { result[0][key] = newObject[key]; } console.log(result);Referencia:
PD: usé un objeto nuevo, pero puede actualizar el objeto anterior y codifiqué el número de matriz, por lo que si tiene más de 1, debe usar for-loop .
Dado que se trata de React, debería buscar estructuras de datos inmutables .
filter los objetos que no coincidan con la identificación y luego agregue el objeto actualizado.
const arr = [ { id: 1, name: 1 }, { id: 2, name: 2 }, { id: 3, name: 3 } ]; const newArr = [ ...arr.filter(obj => obj.id !== 2), { id: 2, name: 'Billy Joel' } ]; console.log(newArr);Documentación adicional
Usando Array.map y fusionar 2 objetos por {...existItem, ...newObject} .
var oldObject = [{ id: 1, key: 'name', fiendSize: '6', fromPlaceHolder: '', fieldInstruction: '', filedType: 'input', lable: "Single Line ", type: 'text', formValidation: { required: false } }]; var newObject = { id: 1, key: 'name', fiendSize: '12', fromPlaceHolder: 'Enter Your Name', fieldInstruction: 'please Enter string only', filedType: 'input', lable: "Single Line ", type: 'text', formValidation: { required: true } }; var result = oldObject.map(item => { var existItem = oldObject.find(e => e.id == newObject.id); if (existItem) { return {...existItem, ...newObject}; } return item; }); console.log(result);