Each user's information is separated by a comma, or a space, but some pieces of information can be blank. I'm looking for a solution to take the user information and create an object (key-value mapping). Here's my approach, but I can't get multiple objects.
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)
When splitting the string, you need to keep the empty strings between the commas, but you are splitting sequences of commas as one divider - [\s,]+
.
Split the string by a single ,
or a sequence of spaces - /,|\s+/
. Then create an array of Person
using Array.from()
, dividing the original length by 4, and taking 4 properties by slicing the original array:
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)
Assuming space is a line separator, and comma is a field separator, split:
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)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.