如何将数组中的手机号和邮箱投影为独立文档字段?
问题描述
需要将包含嵌套数组的用户信息结构,转换为把邮箱、手机号拆分为独立字段的扁平结构:
原始结构:
const originalData = { Name: "Mac", Emails: [ {address: 'mac@mac.com', title: '', isMain: true}, {address: 'mac@ism.com', title: '', isMain: false} ], Phones: [ {number: '6465468794984', title: '', isMain: true}, {number: '6465468794986', title: '', isMain: false} ] };
目标结构:
{ Name: "Mac", Email1: 'mac@mac.com', Email2: 'mac@ism.com', Phone1: '6465468794984', Phone2: '6465468794986' }
实现方案
以JavaScript为例,可通过遍历数组、动态生成字段的方式完成转换:
function transformData(data) { // 初始化结果对象,保留原始Name字段 const result = { Name: data.Name }; // 处理邮箱数组,生成EmailN字段 data.Emails.forEach((email, index) => { result[`Email${index + 1}`] = email.address; }); // 处理手机号数组,生成PhoneN字段 data.Phones.forEach((phone, index) => { result[`Phone${index + 1}`] = phone.number; }); return result; } // 调用示例 const transformedData = transformData(originalData); console.log(transformedData);
说明
- 遍历
Emails和Phones数组,根据元素索引生成对应的EmailN、PhoneN字段 - 直接提取数组项中的
address和number值,赋值给新字段 - 保留原始的
Name字段,最终返回扁平结构的对象
内容的提问来源于stack exchange,提问作者DValdir Martins
相关产品推荐
相关产品推荐

