如何获取在Javascript中作为列表给出的属性子集?

Pan*_*ong 0 javascript arrays object

我需要用数组映射对象数据

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

const key =  ["name", "weight", "height"]
Run Code Online (Sandbox Code Playgroud)

我需要这样的结果

const result = [
                {name:"John", weight:"60", height:"180cm"},
                {name:"Emma", weight:"55",height:"160cm"}
               ]
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

Kob*_*obe 5

您可以只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)
Run Code Online (Sandbox Code Playgroud)

使用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)
Run Code Online (Sandbox Code Playgroud)