La información de cada usuario está separada por una coma o un espacio, pero algunos datos pueden estar en blanco. Estoy buscando una solución para tomar la información del usuario y crear un objeto (asignación de valor clave). Este es mi enfoque, pero no puedo obtener varios objetos.
function Person(name, email, age, occupation) { this.name = name; this.email = email; this.age = age; this.occupation = occupation; } let string = "Norbert,norbert@test.com,51,Coder Noemi,,,Teacher Rachel,rachel@test.com,," let stringArr = string.split(/[\s,]+/) const personObj = new Person(...stringArr) console.log(personObj)Al dividir la cadena, debe mantener las cadenas vacías entre las comas, pero está dividiendo secuencias de comas como un divisor - [\s,]+ .
Divida la cadena por un solo espacio o una secuencia , espacios - /,|\s+/ . Luego crea una matriz de Person usando Array.from() , dividiendo la longitud original por 4 y tomando 4 propiedades cortando la matriz original:
function Person(name, email, age, occupation) { this.name = name; this.email = email; this.age = age; this.occupation = occupation; } const string = "Norbert,norbert@test.com,51,Coder Noemi,,,Teacher Rachel,rachel@test.com,," const stringArr = string.split(/,|\s+/) const personArr = Array.from({ length: stringArr.length / 4 }, (_,i) => new Person(...stringArr.slice(i * 4, i * 4 + 4)) ) console.log(personArr)Suponiendo que el espacio es un separador de línea y la coma es un separador de campo, divida:
function Person(name, email, age, occupation) { this.name = name; this.email = email; this.age = age; this.occupation = occupation; } let string = "Norbert,norbert@test.com,51,Coder Noemi,,,Teacher Rachel,rachel@test.com,,"; const persons = string.split(' ').map(r => new Person(...r.split(','))); console.log(persons)