如何对 javascript 中的对象数组使用过滤器
how to use filter on array of objects in javascript
我想在 javascript
中过滤我的结果。
const ids =["2", "3"];
const data =
[
{"id":'1', 'name:'alex' , 'subject':'english' },
{"id":'2', 'name:'alex' , 'subject':'english' },
{"id":'3', 'name:'alex' , 'subject':'english' },
{"id":'4', 'name:'alex' , 'subject':'english' },
]
我想过滤数据并删除在 ids
中找到的那些 ID。这是我到目前为止尝试过的
const NewData = ids.reduce(function (key, index) {
return (data.filter(x => x.id !== key))
})
但是returns
[
{"id":'1', 'name:'alex' , 'subject':'english' },
{"id":'3', 'name:'alex' , 'subject':'english' },
{"id":'4', 'name:'alex' , 'subject':'english' },
]
我想从 data
中删除 ID 2
& '3',但它只会删除 ID 2
。希望您理解我的问题。
不需要使用reduce。一个简单的过滤器就可以了。
示例:
const ids = ["2", "3"];
const data = [
{ id: "1", name: "alex", subject: "english" },
{ id: "2", name: "alex", subject: "english" },
{ id: "3", name: "alex", subject: "english" },
{ id: "4", name: "alex", subject: "english" },
];
const new_data = data.filter((x) => ids.includes(x.id));
console.log(new_data);
如果原始数组中id的类型与数据中id的类型不同,可以使用.map(a=>parseInt(a))
然后用.includes()
检查
const ids = ["2", "3"];
const data = [
{ id: 1, name: "alex", subject: "english" },
{ id: 2, name: "alex", subject: "english" },
{ id: 3, name: "alex", subject: "english" },
{ id: 4, name: "alex", subject: "english" },
];
const ids_int = ids.map(a => parseInt(a))
const filtered = data.filter(x => !ids_int.includes(x.id))
console.log(filtered)
我想在 javascript
中过滤我的结果。
const ids =["2", "3"];
const data =
[
{"id":'1', 'name:'alex' , 'subject':'english' },
{"id":'2', 'name:'alex' , 'subject':'english' },
{"id":'3', 'name:'alex' , 'subject':'english' },
{"id":'4', 'name:'alex' , 'subject':'english' },
]
我想过滤数据并删除在 ids
中找到的那些 ID。这是我到目前为止尝试过的
const NewData = ids.reduce(function (key, index) {
return (data.filter(x => x.id !== key))
})
但是returns
[
{"id":'1', 'name:'alex' , 'subject':'english' },
{"id":'3', 'name:'alex' , 'subject':'english' },
{"id":'4', 'name:'alex' , 'subject':'english' },
]
我想从 data
中删除 ID 2
& '3',但它只会删除 ID 2
。希望您理解我的问题。
不需要使用reduce。一个简单的过滤器就可以了。
示例:
const ids = ["2", "3"];
const data = [
{ id: "1", name: "alex", subject: "english" },
{ id: "2", name: "alex", subject: "english" },
{ id: "3", name: "alex", subject: "english" },
{ id: "4", name: "alex", subject: "english" },
];
const new_data = data.filter((x) => ids.includes(x.id));
console.log(new_data);
如果原始数组中id的类型与数据中id的类型不同,可以使用.map(a=>parseInt(a))
然后用.includes()
const ids = ["2", "3"];
const data = [
{ id: 1, name: "alex", subject: "english" },
{ id: 2, name: "alex", subject: "english" },
{ id: 3, name: "alex", subject: "english" },
{ id: 4, name: "alex", subject: "english" },
];
const ids_int = ids.map(a => parseInt(a))
const filtered = data.filter(x => !ids_int.includes(x.id))
console.log(filtered)