Tengo dos arreglos de objetos.
array1=[{name:'apple',deleted:false}, {name:'road',deleted:false}, {name:'tree',deleted:false}]y
array2=[{name:'apple'}, {name:'tree'}] lo que quiero es: si el objeto array1 tiene los mismos nombres en array2, quiero cambiar el valor de "eliminado" en array1 a verdadero. por ejemplo: {name:'apple',deleted:true}
esperando array1 resultante:
array1=[{name:'apple',deleted:true}, {name:'road',deleted:false}, {name:'tree',deleted:true}] aquí puede ver, solo apple, tree ha deleted=true , porque array2 solo tiene 2 nombres: apple y tree .
puedes :
bucle en array1 con forEach para muestra
use alguna función para establecer booleanos eliminados
deleted = array2.some(elem2 => elem2.name === elem.name) const array1 = [{ name: 'apple', deleted: false }, { name: 'road', deleted: false }, { name: 'tree', deleted: false } ] const array2 = [{ name: 'apple' }, { name: 'tree' } ]; array1.forEach(elem => elem.deleted = array2.some(elem2 => elem2.name === elem.name)); console.log(array1);Use forEach() para hacer un bucle en array1 y use include() para establecer el valor de eliminado
const array1=[{name:'apple',deleted:false}, {name:'road',deleted:false}, {name:'tree',deleted:false}] const array2=[{name:'apple'}, {name:'tree'}] array1.forEach(el=> el.deleted = array2.map(foo => foo.name).includes(el.name)) console.log(array1)Cree un conjunto de deletedItems .
Asigne los elementos y actualice la propiedad deleted mediante Set .
const items = [{ name: "apple", deleted: false }, { name: "road", deleted: false }, { name: "tree", deleted: false }], deletedItems = [{ name: "apple" }, { name: "tree" }], deletedSet = new Set(deletedItems.map((d) => d.name)), updatedItems = items.map((i) => (deletedSet.has(i.name) ? { ...i, deleted: true } : i)); console.log(updatedItems);