Tengo una matriz de índices: selected = [2, 6, 10] (), por ejemplo. También tengo una variedad de objetos fotográficos llamados photos . Quiero hacer un seguimiento de solo las fotos seleccionadas, así que hago:
const selectedPhotos = selectedArray.map((i) => photos[i]);Lo que me da el resultado:
Array [ Object { "albumId": "someId1", "creationTime": "sometime", "duration": 0, "filename": "name1.jpg", "id": "someId1", "uri": "someIUri1", }, Object { "albumId": "someId2", "creationTime": "sometime", "duration": 0, "filename": "name2.jpg", "id": "id2", "uri": "uri2", }, Object { "albumId": "someId3", "creationTime": "sometime", "filename": "filename3.jpg", "uri": "uri3", }, ] Lo cual es bueno, PERO también quiero realizar un seguimiento del índice seleccionado. Entonces, mi pregunta es, ¿cómo debo agregar algo como la siguiente información: index: 2 o index: 6 , etc. junto con las propiedades de la photo ? Así que quiero devolver algo como:
Array [ Object { "index": 2, "albumId": "someId1", "creationTime": "sometime", "duration": 0, "filename": "name1.jpg", "id": "someId1", "uri": "someIUri1", }, Object { "index": 6 "albumId": "someId2", "creationTime": "sometime", "duration": 0, "filename": "name2.jpg", "id": "id2", "uri": "uri2", }, Object { "index": 10 "albumId": "someId3", "creationTime": "sometime", "filename": "filename3.jpg", "uri": "uri3", }, ]puedes hacer algo como esto
const selectedPhotos = selectedArray.map((i) => { let curItem={...photos[i]}; curItem.index=i; return curItem; });Simplemente agregue el índice:
const selectedPhotos = selectedArray.map((i) => { let photo = photos[i]; photo.index = i; return photo; });Puede crear un nuevo objeto y desestructurar el que desea dentro de él, luego agregar el índice. De esa manera puedes hacerlo en una sola línea y es fácil de leer.
const selectedPhotos = selectedArray.map(i => ({ ...photos[i], index: i }));Versión más segura con cambio opcional :
const selectedPhotos = selectedArray.map(i => ({ ...photos?.[i], index: i }));