Tengo una serie de objetos:
this.array = [{name: null}, {name: null}, {name: null}]y matriz de nombres de reserva:
this.reserved = ["name2", "name3"] Recorro la matriz e intento establecer un nombre único (no incluido dentro de la matriz reserved )
for (let i = 0; i < array.length; i++) { this.setDefaultName(array[i], 1); } private setDefaultName(obj, index){ if (!this.reserved.includes(`name${index}`)) { obj.name = `name${index}`; this.reserved.push(`name${index}`); } else { return this.setDefaultName(obj, index + 1); } }Después de eso, todos los objetos de la matriz tienen el nombre "name3". El resultado esperado es tener un nombre de secuencia único: "nombre1", "nombre4", "nombre5". ¿Alguien podría ayudarme?
¡Creé una demostración de StackBliz que está lo más cerca posible de su código y en realidad funciona bien! Puede comparar esta demostración con la suya: StackBliz Demo
Ajusté parte de su código para que se pueda ejecutar en un fragmento. Aunque parece que funciona. ¿Puedes volver a comprobar?
let nameArray = [{name: null}, {name: null}, {name: null}] let reserved = ["name2", "name3"] for (let i = 0; i < nameArray.length; i++) { setDefaultName(nameArray[i], 1); } function setDefaultName(obj, index){ if (!reserved.includes(`name${index}`)) { obj.name = `name${index}`; reserved.push(`name${index}`); } else { return this.setDefaultName(obj, index + 1); } } console.log(nameArray)