javascript - 检查深层嵌套对象数组中的条件并返回父数组
问题描述
我在 React Native (Expo) 项目中遇到了 JavaScript 问题。
描述:
我正在使用联系人 API 从手机中获取所有联系人。我想过滤列表并仅呈现应用程序数据库中也包含号码的联系人(注册电话)。
问题:
我想遍历对象数组并在嵌套对象(phoneNumbers)中找到要与用户号码进行比较的号码。如果条件正确,那么我想使用父数组作为联系方式。
这是父数组中一个对象的数据结构:
contacts = [
Object {
"contactType": "person",
"firstName": "Mario",
"id": "FF1AAC7C-679A-4C21-7AD9-05CBFCD9812A",
"imageAvailable": false,
"lastName": "Mario",
"name": "Muster",
"phoneNumbers": Array [
Object {
"countryCode": "de",
"digits": "01722618199",
"id": "D5CEEE9B-1AF6-49A1-A45F-501370D5B7A7",
"label": "mobile",
"number": "0172 2618199",
},
],
},
Object {
"contactType": "person",
"firstName": "Tina",
"id": "FF1AAC7C-579A-4C21-7AD9-05CBFCD9812A",
"imageAvailable": false,
"lastName": "Mario",
"name": "Muster",
"phoneNumbers": Array [
Object {
"countryCode": "de",
"digits": "01722518199",
"id": "D5CEEE9B-1AF5-49A1-A45F-501370D5B7A7",
"label": "mobile",
"number": "0172 2518199",
},
],
},
]
我的功能:
const findContacts = (userNumber) => {
let counter = 0;
contacts
.filter((item) => {
return item;
})
.map((item) => {
let newElt = Object.assign({}, item);
return newElt.phoneNumbers.map((item, i) => {
if (item.digits.toString() === userNumber) {
counter = i;
}
});
});
return contacts[counter];
};
收到以下错误:
undefined 不是对象newElt.phoneNumber.map
解决方案
错误实际上是“newElt.phoneNumber.map”,数字中没有“s”吗?如果是这样,则有些可疑,因为您没有在函数粘贴中拼错它。
此外,您的“过滤器”可能没有按照您的意愿行事。过滤器应该返回真/假,并且只包括返回“真”的项目。
您真正想要做的可能只是使用 .filter 然后为 phoneNumbers 包含您想要的每个项目返回“True”......
即这样的事情会给你所有与相关电话号码匹配的父数组联系人对象(在其子数组成员中至少有一个提及)
let contactsThatHadPhoneNumber = contacts.filter(eachContact => {
return eachContact.phoneNumbers.filter(
eachContactNumber => eachContactNumber.number == numberYouAreLookingFor).length > 0
)});
推荐阅读
- c++ - vulkan验证层问题
- amazon-web-services - 使用 PutRecords 将多条记录加载到 Kinesis - 如何在失败的情况下仅重新发送失败的记录?
- javascript - 得到像 Too many re-renders 这样的错误。React 限制渲染次数以防止无限循环
- javascript - 获取 ES6 循环的前一项
- javascript - 如何解析数据类型函数 Array() { [native code] }
- sql - 结合3个SELECT语句输出1个表
- javascript - Cropper.js, PHP/Laravel 上传图片,无需 Ajax
- excel - 如何强制 Excel 用户窗体处于活动/接收窗口
- postgresql - 更新 jsonb 设置新值从同一个表中选择
- css - 实现 3 张图片精确大小的 CSS