javascript - 如何通过从另一个对象中选择特定属性来克隆新的对象数组?

标签 javascript html arrays node.js json

所以,

我收到的数据包含以下信息:

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

现在我需要创建一个包含相同结构但具有一些属性的新对象,即:

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

我需要可扩展的解决方案,例如,假设有一组具有 50 个属性的数据。另外,我确实找到了对象的解决方案,但从未找到对象数组的解决方案。

谢谢大家,我已经绞尽脑汁三个小时了。

最佳答案

您可以使用destrcuturingshorthand property names创建像这样的新对象:

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 })

关于javascript - 如何通过从另一个对象中选择特定属性来克隆新的对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55919186/

相关文章:

javascript - VueJS 有条件地为元素添加一个属性

javascript - 使用 Gulp Browserify 的主干模板

javascript - 引用错误: $ is not defined

jquery - 当我选择单选按钮时,应显示相应的内容

C# 长度为 1 的数组与单值、性能和内存开销

Java:通过 2D float (floats[][]) 数组减少内存消耗

javascript - 尝试在 a href 的附加语句中使用 javascript 变量

javascript - 获取视频 html5 中的源列表

html - Div 出现在 Div 之内而不是之下

arrays - 如何更改包含特定字符串的数组中的元素?