Tengo una serie de índices de días de la semana (que consisten en los números 0-6) que deben convertirse en las cadenas correspondientes de días de la semana de 3 letras correspondientes.
Por ejemplo, la matriz [0, 1, 2, 3, 4, 5, 6] debe convertirse en ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] , y [2,4] debe convertirse en ["Wed","Fri"] . Estos son mis datos de entrada dados:
"data":[ { "name":"John", "gender":"M", "age":"40", "days_present":[0,1,2,3,4,5,6], "time_spend":1626908399000 }, { "name":"Maria", "gender":"F", "age":"32", "days_present":[2,6], "time_spend":1626908366000 }, { "name":"Ben", "gender":"M", "age":"27", "days_present":[2,4,6], "time_spend":1626908331000 } ]Y los datos resultantes deberían aparecer de la siguiente manera:
"data":[ { "name":"John", "gender":"M", "age":"40", "days_present":["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], "time_spend":1626908399000 }, { "name":"Maria", "gender":"F", "age":"32", "days_present":["Wed","Sun"], "time_spend":1626908366000 }, { "name":"Ben", "gender":"M", "age":"27", "days_present":["Wed", "Fri","Sun"], "time_spend":1626908331000 } ]¿Cómo debo hacer mejor para hacer esto?
Bastante simple, solo haz dos llamadas de map :
const obj={"data":[{"name":"John","gender":"M","age":"40","days_present":[0,1,2,3,4,5,6],"time_spend":1626908399000},{"name":"Maria","gender":"F","age":"32","days_present":[2,6],"time_spend":1626908366000},{"name":"Ben","gender":"M","age":"27","days_present":[2,4,6],"time_spend":1626908331000}]}; const weekdays = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; const result = obj.data.map(({ days_present, ...r }) => ({ days_present: days_present.map(i => weekdays[i]), ...r })); console.log(result); .as-console-wrapper { max-height: 100% !important; top: auto; } Esto recorre cada elemento de data y convierte cada uno de los índices de los días de la semana en su correspondiente cadena de días de la semana.