Estoy mapeando el objeto para devolver una matriz de objetos. Sin embargo, quiero modificar el "modelo-1111" de una cadena a un número entero. Este método funciona con una división, sin embargo, me gustaría encontrar una alternativa a la división, porque la división devolverá una matriz, que no es la mejor cuando se procesan muchos datos.
const data = { "model-10389": 164703, "model-10388": 164704, "model-10387": 164705 }; const output = Object.entries(data).map(([key, id]) => ({ modelId: +key.split("-").pop(), id })); console.log(output);Puede slice() o substring() la cadena del indexOf() el '-'
const data = { "model-10389": 164703, "model-10388": 164704, "model-10387": 164705 }; const output = Object.entries(data).map(([key, id]) => ({ modelId: +key.slice(key.indexOf("-") + 1), id })); console.log(output); O usando RegExp para encontrar los dígitos finales ( \d+$ )
const data = { "model-10389": 164703, "model-10388": 164704, "model-10387": 164705 }; const output = Object.entries(data).map(([key, id]) => ({ modelId: +key.match(/\d+$/), id })); console.log(output); O, como creo que Nina Scholz estaba insinuando en los comentarios, podría simplemente replace() el prefijo con una cadena vacía.
const data = { "model-10389": 164703, "model-10388": 164704, "model-10387": 164705 }; const output = Object.entries(data).map(([key, id]) => ({ modelId: +key.replace('model-', ''), id })); console.log(output);Puede limitar las actividades divididas proporcionando el segundo argumento (opcional).
const data = {"model-10389-extra": 164703, "model-10388": 164704, "model-10387": 164705}; const output = Object.entries(data).map(([key, id]) => ({ modelId: +key.split("-",2)[1], id })); console.log(output);