如何在JS中通过对象键筛选对象数组?

4

我试图使用过滤器从对象数组中删除Id,但是Id未被删除。我使用了过滤器方法,然后过滤对象键。

const data= [{
    "id": 1,
    "group_name": "Science",
    "date": 2023,
    "created_table_at": "2022-08-20T01:22:40.000Z",
    "roll": "1401",
    "name": "Israt Jahan",

}]
const filteredData = data.filter((result) =>
          Object.keys(result)
            .filter((key) => key !== "id")
            .reduce((obj, key) => {
              obj[key] = result[key];
              return obj;
            }, {})
        );
console.log(filteredData)

我的期望输出:

[{
        "group_name": "Science",
        "date": 2023,
        "created_table_at": "2022-08-20T01:22:40.000Z",
        "roll": "1401",
        "name": "Israt Jahan",

    }]
2个回答

2
你可以尝试这个解决方案:

const data = [{
  id: 1,
  group_name: 'Science',
  date: 2023,
  created_table_at: '2022-08-20T01:22:40.000Z',
  roll: '1401',
  name: 'Israt Jahan'
}];

/**
 * For each object in the data array, keep everything except the id.
 */
const filteredData = data.map(({ id, ...rest }) => rest);

console.log(filteredData);


1

过滤器是用于在数组中筛选元素的,相反地,您可以使用映射,其中我们克隆原始对象,然后删除我们不想要的属性,此解决方案仅删除单个属性,而不是多个属性!

const data = [{
  "id": 1,
  "group_name": "Science",
  "date": 2023,
  "created_table_at": "2022-08-20T01:22:40.000Z",
  "roll": "1401",
  "name": "Israt Jahan",

}]
const filteredData = data.map(x => {
 const cloned = JSON.parse(JSON.stringify(x));
 delete cloned.id;
 return cloned;
});
console.log(filteredData)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接