javascript - 使用子数组过滤对象

标签 javascript react-native

您好,我正在尝试过滤此对象以获得以下对象结果。某些对象在子数组中可能只有一个子编号。我已经添加了一个示例和所需的结果。

//Curently have 
Object {
"contactType": "person",
"firstName": "Jame Bond",
 "id": "05434909-468F-4AF4-wfde-000000000:ABPerson",
"imageAvailable": false,
 "key": undefined,
"name": "Jame Bond",
 "phoneNumbers": Array [
  Object {
   "countryCode": "us",
    "digits": "+14255556668",
    "id": "53109855-4BA3-4A29-A65C-05B60ED299FA",
    "label": "‎old number",
    "number": "+1 (424) 555-0000",
  },
 Object {
    "countryCode": "gb",
  "digits": "+44712345678",
    "id": "37D77251-39E3-488D-9832-102E7B907E24",
     "label": "mobile",
    "number": "+44712345678",
   },
],
},

//need 
Object {
"name": "James Bond"
  Object {
"digits1": "+14255556668",
"digits2": "+44712345678" // if exists! 
  }
}

有什么建议吗?

最佳答案

像这样吗?

const { 
  name, 
  phoneNumbers: [ 
    // ':' equals as, and '=' means default value, when prop doesn't exist
    // could be anything you want
    { digits: digits1 }, 
    { digits: digits2 = null } 
  ],
} = yourObject;
const newObject = { name, { digits1, ...digits2 } };

我们只是解构对象并从该变量创建新的对象。您可以找到更多信息here .

如果电话号码可能很多,我建议使用以下代码。

const { name, phoneNumbers } = yourObject;
const allDigits = phoneNumbers.map(({ digits }, i) => ({[`digits${i}`]: digits}));
const newObject = Object.assign({ name }, ...allDigits);

关于javascript - 使用子数组过滤对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54466962/

相关文章:

javascript - 使用 iframe src 覆盖 alert()

javascript - 将 html2canvas 中的图像保存到文件夹内

react-native - 卸载 ReactNative App - 清理用户数据

android - 如何在 React-Native 中只获得数字键盘?

javascript - React native - 嵌入 Twitter

javascript - Angular Comment 指令 - 目的/意图/最佳实践

javascript - 将 HTML 元素像字符串一样传递给 div

javascript - Rails 5,等待/加载屏幕,直到模型准备好

javascript - 定义一个常量而不是将这个文字复制 3 次 sonar

android - React-Native 0.14 中 Fetch 抛出 "Network request failed"