【问题标题】:How to get an subset of properties given as list in Javascript? [duplicate]如何在Javascript中获取作为列表给出的属性子集? [复制]
【发布时间】:2020-04-12 02:02:38
【问题描述】:

我需要带有数组的地图对象数据

const data = [
              {name:"John", age:"22", weight:"60", height:"180cm"},
              {name:"Emma",age:"25",weight:"55",height:"160cm"}
             ]

const key =  ["name", "weight", "height"]

我需要这样的结果

const result = [
                {name:"John", weight:"60", height:"180cm"},
                {name:"Emma", weight:"55",height:"160cm"}
               ]

感谢您的帮助

【问题讨论】:

  • 如果我理解正确,您只想删除属性名称年龄?
  • 你已经尝试了什么?

标签: javascript arrays object


【解决方案1】:

您可以在每个对象上只使用map,然后使用Object.fromEntries 使用给定的键创建一个新对象:

const data = [
  { name: "John", age: "22", weight: "60", height: "180cm" },
  { name: "Emma", age: "25", weight: "55", height: "160cm" }
]
const keys = ["name", "weight", "height"]

const res = data.map(o => Object.fromEntries(keys.map(k => [k, o[k]])))
console.log(res)

使用reduce而不是两个循环会更好,尽管可读性较差:

const data = [
  { name: "John", age: "22", weight: "60", height: "180cm" },
  { name: "Emma", age: "25", weight: "55", height: "160cm" }
]
const keys = ["name", "weight", "height"]

const res = data.map(o => keys.reduce((a, k) => (a[k] = o[k], a), {}))
console.log(res)

【讨论】:

    猜你喜欢
    • 2017-09-27
    • 2020-01-12
    • 1970-01-01
    相关资源
    最近更新 更多