Lo que quiero lograr es tener una tercera matriz con una salida vista en la parte inferior de otras dos matrices.
Ahora, la clave aquí es que es básicamente un filtro basado en las coincidencias de la matriz Object.keys de la matriz asignada. Lo que significa que cualquier identificación que exista en la matriz asignada y la matriz Object.keys debe ir a la tercera matriz.
Cuanto más pienso, más parece que necesito hacer un filtro en la matriz mapeada, solo que no estoy 100% seguro de cómo lograrlo correctamente. Acabo de probar un filtro que ahora se ve a continuación y devuelve una matriz vacía.
También intenté usar un índice de búsqueda para encontrar las identificaciones coincidentes, pero no parece encontrar coincidencias.
Cualquier ayuda sería muy apreciada
gracias amablemente
const mapped = data.allProduct.map((item: any) => ({ slug: item.slug.current, id: item.stripeId, })); // What I have tried const foundMapped = mapped.findIndex( (element: any, index: any) => element.id === Object.keys(cartDetails)[index] ); const test = mapped.filter( (item: any, index: any) => item.id === Object.keys(cartDetails)[index] ); esto es Object.keys(cartDetails)
[ "price_1KhMhhF2lAt0poJW42giHxDs", "price_1KVisMF2lAt0poJWnd9LGheT", "price_1KVisMF2lAt0poJWnd9fkfkf", ]esta es una variable mapeada desde arriba
[ { "slug": "the-void", "id": "price_1KVisMF2lAt0poJWnd9LGheT" }, { "slug": "magic-wonders-artwork", "id": "price_1KhMhhF2lAt0poJW42giHxDs" }, { "slug": "other-two", "id": "price_1KVisMF2lAt0poJWnd9fkfkf" }, { "slug": "test-test", "id": "price_1KVisMF2lAt0poJWnd9fjff" } ]Tercera matriz de salida
[ { id: "price_1KhMhhF2lAt0poJW42giHxDs", slug: "the-void" }, { id: "price_1KVisMF2lAt0poJWnd9LGheT", slug: "magic-wonders-artwork" }, { id: "price_1KVisMF2lAt0poJWnd9fkfkf", slug: "other-two" }, ]solo tengo que verificar si la id está en la matriz de claves en su predicado de filter :
const keys = Object.keys(cartDetails); const toFilter = data.allProduct.map((item: any) => ({ slug: item.slug.current, id: item.stripeId, })); const filtered = toFilter.filter(i => keys.includes(i.id))aunque no estoy seguro de por qué no omitiría las claves de objeto para el mapeo de matriz y simplemente verificaría el objeto original, que es más eficiente que verificar si un elemento está en una matriz:
const filtered = toFilter.filter(i => !!cartDetails[i.id])o
const filtered = toFilter.filter(i => cartDetails[i.id] !== undefined) si cartDetails puede / podría incluir valores falsos válidos como 0, cadena vacía o falso