【发布时间】:2019-12-24 03:57:31
【问题描述】:
我有一个要验证的数组,特别是联系人列表中的姓名。此数组中的某些对象缺少名称,而在该属性中具有电话号码。如何过滤掉 name 属性不是由字母组成的任何记录? (名字只有字母)。因此,在下面的示例中,我应该只留下一条记录(Carl Johnson),因为该记录具有全名。
我的数据
let arrayIn= [
{phoneNumbers:[
{ label: 'work', number: '+3476859087'},
{ label: 'mobile', number: '+4567893214'}
],
lookupKey:"12345",
company:"PHONE",firstName:"",contactType:"person",name:"71892823",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:"",
}
]
fetchContacts = async () => {
console.log('fetching contacts')
let { status } = await Permissions.getAsync(Permissions.CONTACTS);
if (status !== Permissions.PermissionStatus.GRANTED) {
// TODO: Handle permissions denied.
console.log('permissions have been denied')
await Permissions.askAsync(Permissions.CONTACTS);
} else {
console.log('permission granted')
//pull data from contacts
//const { data } = await Contacts.getContactsAsync({
//fields: [Contacts.Fields.Emails],
//});
const { data } = await getContactsAsync({
fields: [EMAILS, PHONE_NUMBERS],
});
if (data.length > 0) {
const contact = data.reduce((acc, {
id,
name,
phoneNumbers,
emails
}) => {
return [...acc, {
'id': name,
'name': name ? name : null,
'phone': phoneNumbers ? this.validatePhone(phoneNumbers[0]['number']) : null,
'email': emails ? emails[0].email : null
}];
}, []);
this.setState({ contacts: contact.slice(10,15).filter(c=>c.name!=(HERE IS WHERE I WOULD FILTER OUT ANY NAMES THAT HAVE NUMBERS)) })
}
}
};
【问题讨论】:
-
一个更简单的方法是检查名称是否不是由数字组成的。
-
我可能错误地表达了这个问题。这就是我的意思,我如何检查名称中是否有数字并因此将其过滤掉?
-
我已经在下面发布了答案▼
标签: javascript arrays react-native