Necesito crear un registro, pero debo verificar si en la lista dada, el registro con el mismo nombre está disponible o no, si está disponible, luego agrego con un número incrementado. A continuación se muestra la lista dada.
let listOfValues = [ { name: "Peter", age: 25 }, { name: "Paul", age: 35 }, { name: "Paul-1", age: 35 }, { name: "Dom", age: 28 }]
Y, estoy creando un registro de la siguiente manera:
let requestBody = { name: "Paul", age: 28 }Ahora, quiero comparar el nombre de requestBody con la lista dada. Supongamos que Paul ya está disponible, luego verificará si Paul-1 también está disponible y luego debería incrementarse con un número como Paul-2. Cualquier ayuda sería apreciada.
Solución genérica
requestBody ."-" y devolver el índice del nombre.violín de trabajo
let listOfValues = [ { name: "Peter", age: 25 }, { name: "Paul", age: 35 }, { name: "Paul-1", age: 35 }, { name: "Dom", age: 28 } ]; let requestBody = { name: "Paul", age: 28 } const regex = new RegExp('^' + requestBody.name.split('-')[0], 'i'); const existingList = listOfValues.filter((item) => item.name.match(regex)).map((item) => +item.name.split('-')[1]).sort((a, b) => a - b); if (existingList.length > 0) { const finalIndex = existingList[existingList.length - 1]; listOfValues.push({ name: finalIndex ? `${requestBody.name.split('-')[0]}-${(finalIndex + 1)}` : `${requestBody.name}-1`, age: requestBody.age }); } else { listOfValues.push(requestBody); } console.log(listOfValues);