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)
谢谢你的帮助
您可以只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)