javascript - 如何获取数组中的对象子集并将数组作为参数传递

标签 javascript reactjs

我正在接收一组对象作为来自 API 调用的响应数据。

data = [{obj1},{obj2},{obj3},{obj4},{obj5}]

obj1 = {
  prop1: 'value1',
  prop2: 'value2',
  prop3: 'value3',
}

我正在尝试使用数组,比方说:['prop2', 'prop3'] 来过滤对象数组并返回对象子集的数组。

[{filteredObj1},{filteredObj2},{filteredObj3},{filteredObj4},{filteredObj5}]

filteredObj1 = {
  prop2: 'value2',
  prop3: 'value3'
}

等等...

最初尝试了以下方法:

const arrayOfPropsIWant = ['prop1', 'prop2']

data.forEach((el) => {
  const filtered = (({ ...arrayOfPropsIWant }) => ({ ...arrayOfPropsIWant }))(el);
})

当我不传递 ...arrayOfPropsIWant 来解构时,这有效,而是显式传递了 props (({ prop1, prop2 })

我正在尝试构建自定义 ReactJS Hook ,有什么方法可以实现此目的吗?

最佳答案

你应该使用Array.map:

const data = [
 { prop1: 'value1', prop2: 'value2', prop3: 'value3' },
 { prop1: 'value1', prop2: 'value2', prop3: 'value3'},
 { prop1: 'value1', prop2: 'value2', prop3: 'value3'}
]

const arrayOfPropsIWant = ['prop1', 'prop2']

const filtered = data.map((elem) => {
    const out = {};
    arrayOfPropsIWant.forEach(prop => out[prop] = elem[prop]);
    return out;
   }
);

console.log(filtered);

关于javascript - 如何获取数组中的对象子集并将数组作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60791105/

相关文章:

reactjs - 在Next.js网站中打开页面作为覆盖

javascript - 在 nextjs 的 Layout 组件中使用 getInitialProps

javascript - 尝试创建一个全局 npm 模块。执行命令时我得到 "The system cannot find the path specified"

Firebase 中的 JavaScript 变量仅出现在它调用的第二次函数中

javascript - 如何自动发送图片到服务器?

node.js - webpack +express.js 不加载bundle.js

javascript - React 将 md (remarkable) 渲染为字符串

reactjs - react 最终形式的 FieldArray 的性能问题

javascript - 使用chart.js 实现多个动态折线图 | js和html

javascript - Angular 5 和 Google Maps v3 Api - 从 map "click"事件获取坐标