Si tengo una matriz de valores ['123', '456', '789'] ¿qué enfoque puedo usar para iterar sobre esta matriz y reemplazar, en secuencia coincidente, partes de una cadena que tienen el valor :id (por ejemplo users/:id/games/:id/server/:id )?
Por el momento, he estado jugando con .forEach() , pero el valor inicial no se actualiza por iteración. Es curioso cómo se podría modificar el siguiente ejemplo de una manera que me permitiera pasar una versión actualizada de la cadena con una :id menos.
entrada: { target: 'users/:id/games/:id/server/:id', ids: ['123', '456', '789'] }
salida: 'users/123/games/456/server/789'
const injectPathVariables = ( target: string, ids: string[] ): string => { let newStr: string | undefined; ids.forEach(id => { if (newStr === undefined) { newStr = target.replace(':id', id); return; } newStr.replace(':id', id); }); return newStr; };Formación. forEach() irrita la matriz.
Formación. map() irrita la matriz y devuelve una nueva matriz.
const injectPathVariables = ( target: string, ids: string[] ): string => { let newStr: string | undefined; ids.map(id => { if (newStr === undefined) { newStr = target.replace(':id', id); return; // this will result in replacing id with Undefined } newStr.replace(':id', id); }); return newStr; };