entrada: ["doc", "doc", "image", "doc(1)", "doc"]
salida: ["doc", "doc(1)", "image", "doc(1)(1)", "doc(2)"]
La cuestión:
{used[name]++} esta parte del código me está engañando.
no entiendo linea y como no le estoy asignando 1 a lo primero
el código está funcionando como debería a partir de prueba y error; pero estoy teniendo dificultades para envolver mi cerebro alrededor de este bucle.
mi entendimiento:
recorremos los nombres, luego cada nombre que comienza con docs; asignamos newName a doc1
Lo que probé:
used[newName] = 6;
resultados: [doc, doc(6), imagen, doc(1), doc(7)]
esto terminó por confundirme más. es tarde y puede que necesite dormir un poco.
const solution = names => { const used = {}; return names.map(name => { let newName = name; while (used[newName]) { newName = `${name}(${used[name]++})`; } used[newName] = 1; return newName; }); };La primera vez que se encuentra un nombre used[newName] no está undefined , por lo que el bucle while ni siquiera se inicia y se devuelve newName . La próxima vez que se encuentre, ya tiene user[newName]=1 , por lo que (1) se agrega al nombre, y así sucesivamente.