如何将字符串数组转换为Javascript对象 实现多用户信息键值映射
问题根源
- 你使用的分割正则
/[\s,]+/会合并连续的逗号、空格分隔符,直接丢失为空的字段,最终得到的数组字段顺序已经错位 - 没有按照单用户固定4个字段的规则对字段数组做分组,所有字段直接传入单个构造函数,自然只能生成1个对象
修复后代码
function Person(name, email, age, occupation) { this.name = name; this.email = email || ''; // 空字段默认赋值为空字符串,避免出现undefined this.age = age ? Number(age) : ''; // 年龄统一转数字类型,不需要可删掉 this.occupation = occupation || ''; } let string = "Norbert,norbert@test.com,51,Coder Noemi,,,Teacher Rachel,rachel@test.com,," // 先把用户分界的空格替换为逗号,再按逗号分割,完整保留空字段 let allFields = string.replaceAll(' ', ',').split(','); // 按每个用户4个字段分组生成实例 let personList = []; for (let i = 0; i < allFields.length; i += 4) { let userFields = allFields.slice(i, i + 4); personList.push(new Person(...userFields)); } console.log(personList);
输出效果
最终会得到包含3个Person实例的数组,对应3位用户的信息,空字段会按规则保留默认值。
内容的提问来源于stack exchange,提问作者gnorbert
相关产品推荐
相关产品推荐

