Digamos que tengo una matriz de id const ids = [[1, 2, 3], [2, 3], [3]]
Y tenga una matriz con objetos que tengan un nombre para cada identificación
const obj = [ { id: 1, name: "One" }, { id: 2, name: "Two" }, { id: 3, name: "Three" }, ]; ¿Cuál es la forma más adecuada de obtener ids = [["One", "Two", "Three"], ["Two", "Three"], ["Three"]] , me preocupa que el mapeo anidado pueda causar problemas de rendimiento.
Usa una combinación de map y find . Puede haber una forma más eficiente de hacerlo, pero sugeriría que se preocupe por eso solo si tiene problemas de rendimiento: -
const ids = [[1, 2, 3], [2, 3], [3]]; const obj = [ { id: 1, name: "One" }, { id: 2, name: "Two" }, { id: 3, name: "Three" }, ]; const mapped = ids.map(arr => arr.map(id => obj.find(obj => obj.id === id).name));const obj = [ { id: 1, name: "One" }, { id: 2, name: "Two" }, { id: 3, name: "Three" }, ]; const ids = [[1, 2, 3], [2, 3], [3]] ; // dedicated object to keep association between id and names let names = {} ; obj.forEach( o => { names[ o.id ] = o.name ; } ) ; // map each sub array content to their real name for( let i = 0; i <= ids.length-1; i++){ ids[i] = ids[i].map( id => names[id] ) ; } console.log( ids ) ;=>
[ [ 'One', 'Two', 'Three' ], [ 'Two', 'Three' ], [ 'Three' ] ]