Estoy tratando de transformar los datos de 2 puntos finales para simular una interfaz de usuario de tabla básica, pero actualmente no tengo acceso a la base de datos. He jugado con lodash y he tenido un poco de éxito al poder fusionar las dos matrices en función de las referencias usando _.defaults, etc., pero sin éxito.
Estoy tratando de mostrar los datos en una tabla plana por ID de fila, con las claves recién insertadas que se usan como referencias de columna
BusData1 = [ { id: 1, ObjRef: 1, ObjRefLabel: "ObjRef1 - Option 1", ObjRefDesc: "Option 1 Desc", parentId: null, }, { id: 12, ObjRef: 1, ObjRefLabel: "ObjRef1 - Option 2", ObjRefDesc: "Option 2 Desc", parentId: null, }, ]; OtherData2 = [ { id: 21, BusDataId: 1, ObjRef: 1, ObjRefDesc: "Desc", }, { id: 22, BusDataId: 1, ObjRef: 0, ObjRefDesc: "Desc", }, { id: 31, BusDataId: 1, ObjRef: 1, ObjRefDesc: "Desc", }, { id: 32, BusDataId: 12, ObjRef: 0, ObjRefDesc: "Desc", }, ];Estoy tratando de fusionar la matriz 2 en la matriz 1 con los valores clave, pero al insertarla en la matriz 1, estoy tratando de actualizar la clave para incluir la identificación del objeto para que cada clave de inserción tenga una referencia única.
Combined = [ { id: 1, ObjRef: 1, BusDataId21ObjRef: 1, BusDataId22ObjRef: 0, BusDataId31ObjRef: 1, ObjRefLabel: "Option 1", ObjRefDesc: "Desc", parentId: null, }, { id: 12, ObjRef: 1, BusDataId31ObjRef: 0, ObjRefLabel: "Option 2", ObjRefDesc: "Desc", parentId: null, }, ];Hasta ahora obtuve lo siguiente de otra publicación de StackOverflow, pero no puedo ir más allá de esto.
const combine = _.map(otherData2, function(row){ return _.defaults(row, _.find(otherData2, {BusDataID: row.id}Cualquier consejo u orientación aquí sería apreciado
Recorra la matriz de datos comerciales. Para cada elemento de datos comerciales, busque los elementos en la segunda matriz que le pertenecen e insértelos como entradas adicionales.
BusData1 = [{ id: 1, ObjRef: 1, ObjRefLabel: "ObjRef1 - Option 1", ObjRefDesc: "Option 1 Desc", parentId: null, }, { id: 12, ObjRef: 1, ObjRefLabel: "ObjRef1 - Option 2", ObjRefDesc: "Option 2 Desc", parentId: null, }, ]; OtherData2 = [{ id: 21, BusDataId: 1, ObjRef: 1, ObjRefDesc: "Desc", }, { id: 22, BusDataId: 1, ObjRef: 0, ObjRefDesc: "Desc", }, { id: 31, BusDataId: 1, ObjRef: 1, ObjRefDesc: "Desc", }, { id: 32, BusDataId: 12, ObjRef: 0, ObjRefDesc: "Desc", }, ]; BusData1.forEach(business => { OtherData2.filter( other => other.BusDataId == business.id ).forEach( other => { business["BusDataId" + other.id + "ObjRef"] = other.ObjRef }) }) console.log(BusData1)Esto es O(nxm). Si eso no es lo suficientemente rápido para matrices enormes, ¿podría aprovechar las propiedades conocidas?
Por ejemplo, si los elementos de la segunda matriz están ordenados de manera que las entradas que pertenecen al elemento 1 de BusData1 aparecen antes que las que pertenecen al elemento 2 de BusData1, podría hacerlo con una sola pasada, es decir, O(n+m).