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/

相关文章:

javascript - Accordion 的事件标题属性无法正常工作

javascript - 不同数量的相关嵌套 for 循环

javascript - 如何处理网络请求失败错误?

javascript - 在单页应用中,在服务器上进行排序和过滤是标准的吗?

reactjs - 多选标签被输入字段的轮廓划掉

javascript - 使用子组件的数据从组件分派(dispatch)操作

javascript - 为什么 View 中没有数据建模

javascript - 将页面另存为 HTML 对话框

Javascript:两个自执行函数如何相互访问

javascript - react : Difference between this. state= 和 this.setState