使用分配解构来定位特定数组元素

时间:2019-02-11 15:30:28

标签: javascript ecmascript-6 destructuring

我正在MongoDB / Node后端中使用一些分配结构分解,以处理一些后处理。我只是想了解这种解构的工作原理,如果是由多个元素组成的数组和嵌套数组,是否可以输入要定位的元素。

以下面的代码为例:

    services: [
      ,
      {
        history: [...preSaveData]
      }
    ]
  } = preSaveDocObj;

我的假设是上述代码的“服务”中的“,”将默认为查看数组中的第一个元素。是吗?

现在,如果我有一个看起来像这样的文档结构(见下文),并且我知道我想定位“ services”元素等于“ typeTwo”的“ services”元素,我该怎么做?:

 {
   _id: 4d39fe8b23dac43194a7f571,
   name: {
     first: "Jane",
     last: "Smith"
   }
   services: [
    {
     service: "typeOne",
     history: [ 
       { _id: 121, 
         completed: true,
         title: "rookie"
       },
       { _id: 122, 
         completed: false,
         title: "novice"
       } 
      ]
     },
     {
      service: "typeTwo",
      history: [ 
       { _id: 135, 
         completed: true,
         title: "rookie"
       },
       { _id: 136, 
         completed: false,
         title: "novice"
       } 
      ]
     }
   ]
 }

如何编辑此代码(请参见下文)以专门定位“服务”等于“ typeTwo”的“服务”数组?

    services: [
      ,
      {
        history: [...preSaveData]
      }
    ]
  } = preSaveDocObj;

1 个答案:

答案 0 :(得分:1)

不要过度破坏,只find

 const { history: [...preSavedData] } = doc.services.find(it => it.serice === "typeTwo");