gpt4 book ai didi

javascript - 当您过滤时, foreach 不适用于对象数组

转载 作者:行者123 更新时间:2023-12-01 01:14:11 26 4
gpt4 key购买 nike

我正在尝试从所有联系人列表中获取所有号码。我可能没有正确使用 forEach 有什么建议吗?我已经提供了预期内容的示例

 //sample of a contact
Object {
"company": "Financial Services Inc.",
"contactType": "person",
"firstName": "Hank",
"id": "2E73EE73-C03F-4D5F-B1E8-44E85A70F170",
"imageAvailable": false,
"jobTitle": "Portfolio Manager",
"lastName": "Zakroff",
"middleName": "M.",
"name": "Hank M. Zakroff",
"phoneNumbers": Array [
Object {
"countryCode": "us",
"digits": "5557664823",
"id": "337A78CC-C90A-46AF-8D4B-6CC43251AD1A",
"label": "work",
"number": "(555) 766-4823",
},
Object {
"countryCode": "us",
"digits": "7075551854",
"id": "E998F7A3-CC3C-4CF1-BC21-A53682BC7C7A",
"label": "other",
"number": "(707) 555-1854",
},
],
},

//Expected
numbers = [
5557664823,
7075551854
]

//does not work
const numbers = contacts.map(contact => contact.phoneNumbers.forEach(number));

最佳答案

forEach 始终返回 undefined,因此您的 map 回调返回 undefined,因此 numbers 将充满 未定义

我认为您可能想要返回电话号码(每个条目的 phoneNumbers 数组中的每个 number),然后可能会展平结果:

const numbers = contacts.map(contact => contact.phoneNumbers.map(({number}) => number)).flat();

Array.prototype.flat相对较新,但很容易进行多填充。

这是一种常见的模式,有一个 flatMap一次性完成的方法:

const numbers = contacts.flatMap(contact => contact.phoneNumbers.map(({number}) => number));

或者只是一个带有 push 的简单循环:

const numbers = [];
for (const {phoneNumbers} of contacts) {
numbesr.push(...phoneNumbers.map(({number}) => number));
}

关于javascript - 当您过滤时, foreach 不适用于对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54910179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com