Quiero devolver una matriz de objetos sin ID duplicados. Si hay alguno, entonces toma el primero que veamos. Por lo tanto, NO deberíamos ver {id: "2", valor: '10'}. En su lugar, el valor debe ser "italiano". Tengo este código a continuación, pero obtengo un mapa. No es un error de función.
const arr1 = [{ id: "1", value: "English" }, { id: "2", value: "Italian" } ]; const arr2 = [{ id: "2", value: '10' }, { id: "3", value: "German" } ]; const concatArr = arr1.concat(arr2); const mergedArr = [...concatArr.reduce((map, obj) => map.has(obj.id) ? "" : map.set(obj.id, obj), new Map()).values()]; console.log(mergedArr);Siempre debe devolver un map no una cadena vacía cuando la cosa ya está en el mapa.
const arr1 = [{ id: "1", value: "English" }, { id: "2", value: "Italian" } ]; const arr2 = [{ id: "2", value: '10' }, { id: "3", value: "German" } ]; const concatArr = arr1.concat(arr2); const mergedArr = [...concatArr.reduce((map, obj) => map.has(obj.id) ? map : map.set(obj.id, obj), new Map()).values()]; console.log(mergedArr);Puede usar array#reduce para identificar de manera única cada objeto con una identificación única en un acumulador de objetos y luego extraer todos los valores de este objeto usando Object.values() .
const arr1 = [{ id: "1", value: "English" }, { id: "2", value: "Italian" } ], arr2 = [{ id: "2", value: '10' }, { id: "3", value: "German" } ], result = Object.values(arr1.concat(arr2).reduce((r, o) => { r[o.id] = r[o.id] || o; return r; },{})); console.log(result);