javascript - 如何在Javascript中获取作为列表给出的属性子集?
问题描述
我需要带有数组的地图对象数据
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"}
]
感谢您的帮助
解决方案
您可以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)
推荐阅读
- c++ - 如何多次将fstream传递给函数
- python - 如何使用添加到熊猫数据框中的每日数据来增量计算移动平均值?
- c# - TagBuilder 查找特定的内部元素并添加新属性
- cookies - _abck 和 bm_sz 的用途是什么?
- flutter - 异步函数不等待
- google-analytics - 行为部分中的 Google 分析事件未显示
- css - 渐变动画使 CSS 无法在 Internet Explorer/Edge/Safari 上正确显示
- z3 - 变量是否有最大值大小?
- java - 在 RecyclerView 中显示多个数据时出现 java.lang.IndexOutOfBoundsException
- java - 检索 Apache circularfifobuffer 中最后一项的计算效率最高的方法是什么?