Actualmente estoy devolviendo un gran conjunto de datos de AWS OpenSearch a una matriz llamada eventList . Cada evento dentro de la matriz tiene la siguiente estructura:
{ _source: { "key": value "key": value "key": value } } Por lo tanto, quiero desestructurar esto para que _source se convierta en los datos del evento y luego mapear sobre eventList. Actualmente, tengo dos instancias de .map y sé que esto no es tan eficiente, así que me gustaría saber cómo combinarlas.
let eventList = [ { _source: { tags: "xxx,yyy,zzz" ... } } ]; eventList = eventList.map((event) => event._source); eventList = eventList.map((event) => { const { tags } = event; return { ...event, tags: tags?.split(",") ?? [], }; });Como dice en la pregunta, puede combinar esas dos llamadas de map :
eventList = eventList.map(({_source}) => ( ..._source, tags: _source.tags?.split(",") ?? [], ));He usado la desestructuración en la lista de parámetros, pero no tienes que hacerlo si no quieres:
eventList = eventList.map((event) => ( ...event._source, tags: event._source.tags?.split(",") ?? [], ));Hay cientos de formas diferentes de escribir eso, pero entiendes la idea.
En realidad, podríamos llevar la desestructuración más allá:
eventList = eventList.map(({_source: {tags, ...rest}}) => ( ...rest, tags: tags?.split(",") ?? [], )); Pero todas estas variaciones deberían ser aproximadamente iguales en términos de rendimiento; la gran victoria es tener un solo map .