簡體   English   中英

如何通過從另一個對象中選擇特定屬性來克隆新的對象數組?

[英]How to clone new array of objects by selecting particular properties from another?

所以,

我收到的數據包含以下信息:

{  
   "data":[  
      {  
         "vote_count":22222,
         "id":299537,
         "ready":false,
      },
      {  
         "vote_count":2850,
         "id":299534,
         "ready":true,
      },
     ]
}

現在,我需要制作一個包含相同結構但具有一些屬性的新對象,即:

{
  "data": [
   {
      "ready":false,
   },
   {
      "ready":true,
   }
 ]
}

我需要可擴展的解決方案,例如,假設有一組具有50個屬性的數據。 此外,我確實找到了對象的解決方案,但從未找到對象數組的解決方案。

謝謝大家,我已經把頭弄壞了三個小時。

您可以使用解構簡寫屬性名稱來創建新對象,如下所示:

 const input={"data":[{"vote_count":22222,"id":299537,"ready":false,},{"vote_count":2850,"id":299534,"ready":true,},]} const data = input.data.map(({ ready }) => ({ ready })) console.log({ data }) 

如果要獲取一堆屬性,則可以創建所需的屬性數組。 然后使用Object.assign()reduce來創建每個對象的子集,如下所示:

 const input={"data":[{"vote_count":22222,"id":299537,"ready":false,},{"vote_count":2850,"id":299534,"ready":true,},]} const properties = ["vote_count", "ready"] const data = input.data.map(a => Object.assign({}, ...properties.map(p => ({ [p]: a[p] }))) ) /* You could also use reduce like this: input.data.map(a => properties.reduce((r, p) => ({ ...r, [p]: a[p] }), {})) */ console.log({ data }) 

映射所需的屬性

 var obj1 = { "data":[ { "vote_count":22222, "id":299537, "ready":false, }, { "vote_count":2850, "id":299534, "ready":true, }, ] } var obj2 = {} obj2.date = obj1.data.map(data => ({ ready: data.ready})); console.log(obj2) 

您可以使用Array#map方法和Array#reduce方法進行操作

 const input = { "data": [{ "vote_count": 22222, "id": 299537, "ready": false, }, { "vote_count": 2850, "id": 299534, "ready": true, }, ] } const extract = ['ready'] const data = input.data.map(o => extract.reduce((obj, k) => (obj[k] = o[k], obj), {})) console.log({ data }) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM