我正在寻找一个数组的映射,以创建一个具有相关属性的新数组。我已经在手机上成功访问了我的联系人,并希望将数据推送到更有条理的结构中。如何使用电子邮件和电话号码的第一个值(如果存在)映射到Array In以获得Array Out?下面是一个通讯录数组的示例:
数组输入
let arrayIn= [
{phoneNumbers:[
{ label: 'work', number: '+3476859087'},
{ label: 'mobile', number: '+4567893214'}
],
lookupKey:"12345",
company:"PHONE",firstName:"John",contactType:"person",name:"John Smith",id:"879",
emails:[
{email:'johnSmith@gmail.com'}
],
lastName:"Smith",
},
{phoneNumbers:[
{ label: 'mobile', number: '+3476859087'},
{ label: 'work', number: '+4567773214'}
],
lookupKey:"890744",
company:"PHONE",firstName:"Carl",name:"Carl Johnson",id:"879",
emails:[
{email:'cjohnsonh@gmail.com'}
],
lastName:"johnson",
}
]
我想得出以下结论: 排列
[
{name: 'John Smith', phone: 3476859087, email: 'jsmith@gmail.com'},
{name: 'Carl Johnson', phone: 3476859087, email: 'cJohnson@gmail.com'}
]
我已经在数组上映射了一个联系人列表,当我选择每个联系人列表时,我想将其推入状态。我的小吃在这里供参考:https://snack.expo.io/@fauslyfox110/testingreferrals
不想找人为我做零食,只是为了帮助我处理从阵列输入到阵列输出的阵列部分。
有效的答案
let arrayOut = arrayIn.reduce((acc, {name, phoneNumbers, emails}) => {
return [...acc, {
'name': name,
'phone': phoneNumbers[0]['number'].replace('+', ''),
'email': emails[0].email
}];
}, []);
console.log(arrayOut);
答案 0 :(得分:1)
您的数据中出现一些Sytax错误,主要是您使用[]
,然后分配了属于对象的 key:value 对-我交换了{在这种情况下,[]
的{1}}
我使用了.reduce()
来遍历您的数据并返回所需的数组。我不确定您希望如何处理电话号码,所以我只返回第一个电话
{}
答案 1 :(得分:0)
这澄清吗?
let inputArray = [{name: 1}, {name: 2}]
let outputArray = inputArray.map(inputArrayItem => { return {name: inputArrayItem.name}; });
console.log(outputArray );
答案 2 :(得分:0)
您的数组输入中有一些语法错误。我没有做映射,而是在for循环中做的,但是看起来像这样。
let arrayIn = [
{phoneNumbers:[
'+3476859087',
'+4567893214'
],
lookupKey:"12345",
company:"PHONE",firstName:"John",contactType:"person",name:"John Smith",id:"879",
emails:[
'johnSmith@gmail.com'
],
lastName:"Smith",
},
{phoneNumbers:[
'+3476859087',
'+4567773214'
],
lookupKey:"890744",
company:"PHONE",firstName:"Carl",name:"Carl Johnson",id:"879",
emails:[
'cjohnsonh@gmail.com'
],
lastName:"johnson",
}
]
let arrayOut = []
for(let i = 0; i < arrayIn.length; i++){
let contact = {
name: arrayIn[i].name,
phone: arrayIn[i].phoneNumbers[0],
email: arrayIn[i].emails[0],
}
arrayOut.push(contact);
}
console.log(arrayOut);
这是我的jsfiddle:https://jsfiddle.net/1brL2cz0/
我没有从电话号码中分离出'+',但是您可以轻松做到。