javascript - 根据另一个对象数组过滤对象数组并返回合并数组

标签 javascript arrays object filter

我有一个像这样的对象数组:

phoneContacts= [
{
  firstName: "aaaa", 
  lasttName: "aaaa", 
  phoneNumbers: [{id: "1", label: "mobile", number: "09121111111"},{id: "1", label: "home", number: "02188888888"}]
},
{
  firstName: "bbbb", 
  lasttName: "bbbb", 
  phoneNumbers: [{id: "1", label: "mobile", number: "09122222222"},{id: "1", label: "home", number: "02177777777"}],
},
...]

我想用这样的数组过滤它:

registeredUsers= [
{
  ID: 1, 
  CellPhone: "09123333333"
},
{
  ID: 2, 
  CellPhone: "09121111111"
},
...]

并返回:

contactsMergerdWithID= [
{
  ID: 1,
  firstName: "aaaa", 
  lasttName: "aaaa", 
  phoneNumbers: [{id: "1", label: "mobile", number: "09121111111"},{id: "1", label: "home", number: "02188888888"}]
},
{
  ID: 0,            // or without ID
  firstName: "bbbb", 
  lasttName: "bbbb", 
  phoneNumbers: [{id: "1", label: "mobile", number: "09122222222"},{id: "1", label: "home", number: "02177777777"}]
},
...]

如果第一个数组的任何手机号码与第二个数组中的 CellPhone 匹配,我想返回第二个数组中具有匹配 ID 字段的第一个数组。 我怎样才能做到这一点?

最佳答案

const registeredUsers= [ {
  ID: 1, 
  CellPhone: "09123333333"
}, {
  ID: 2, 
  CellPhone: "09121111111"
}];

phoneContacts= [ {
  firstName: "aaaa", 
  lasttName: "aaaa", 
  phoneNumbers: [{id: "1", label: "mobile", number: "09121111111"},{id: "1", label: "home", number: "02188888888"}]
}, {
  firstName: "bbbb", 
  lasttName: "bbbb", 
  phoneNumbers: [{id: "1", label: "mobile", number: "09122222222"},{id: "1", label: "home", number: "02177777777"}],
}]

const contactsMergerdWithID = phoneContacts.map(contact => {
  const mobile = contact.phoneNumbers.find(phoneNumber => phoneNumber.label === 'mobile')
  const userfound = registeredUsers.find(user => user.CellPhone === mobile.number);
  return userfound ? { ...contact, ID: userfound.ID } : contact;
  // incase you dont want `phoneContacts` without `ID`, you can just return `false` instead of `contact` and put `.filter(Boolean)` after the `.map()`
});

console.log(contactsMergerdWithID);

关于javascript - 根据另一个对象数组过滤对象数组并返回合并数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51964271/

相关文章:

javascript - AJAX 请求在 PHP 中给出 'undefined index' 错误

arrays - 获取更短版本的 for 循环?

java - 查找二维数组或直方图的两个主要峰值和峰值之间的谷值

java - 双向链表,删除第一次出现

javascript - 如何将 Object.keys().map() 函数中的参数设置为新对象中的键?

javascript - 在这种情况下如何处理数据驱动的输入?

Javascript 在文本中查找单词并动态改变颜色

javascript - 将值从 1 个 .htm 文件传递​​到另一个 .html 文件而不提交

python - 如何使用 NumPy 通过相应的索引在列表列表中查找最大值

javascript - 访问JSON信息: Objects in Objects