ABC*_*ABC 4 javascript typescript angular
data = [{
id: "txv3vvBr8KYB",
name: "room 1"
},{
id: "txv3vvBr8KJB",
name: "room 2"
},{
id: "txv3vvBr8K",
name: "room 4"
},{
id: "txv3vvBr8LKP",
name: "room 3"
},{
id: "txv3vvBr8LDS",
name: "room 5"
}]
roomList = [
{
room: {
code: "r001",
id: "txv3vvBr8KYB",
name: "room 1",
status: "FULL"
}
},
{
room: {
code: "r002",
id: "txv3vvBr8KJB",
name: "room 2",
status: "FULL"
}
},
{
room: {
code: "r003",
id: "txv3vvBr8LKP",
name: "room 3",
status: "FULL"
}
}
]
Run Code Online (Sandbox Code Playgroud)
我在这里尝试做的是过滤 roomList 中的数据,并在它们是相同的 id 时从数据中删除项目。
预期的输出应该是这样的:
data = [{
id: "txv3vvBr8K",
name: "room 4"
}{
id: "txv3vvBr8LDS",
name: "room 5"
}]
Run Code Online (Sandbox Code Playgroud)
我尝试使用过滤器和地图。
this.data.filter((x: any) => this.roomList.map((y: any) => y['room']['id] === x['id']);
Run Code Online (Sandbox Code Playgroud)
可能最好首先reduce()将房间 ID 设置为 a Set,然后filter()基于此:
const ids = roomList.reduce((a, {room: {id}}) => (a.add(id), a), new Set());
const result = data.filter(({id}) => !ids.has(id));
Run Code Online (Sandbox Code Playgroud)
完整片段:
const ids = roomList.reduce((a, {room: {id}}) => (a.add(id), a), new Set());
const result = data.filter(({id}) => !ids.has(id));
Run Code Online (Sandbox Code Playgroud)
或者,如果您真的想以单线方式完成并且性能不是那么大的问题,您可以使用some():
const result = data.filter(({id}) => !roomList.some(({room}) => room.id === id));
Run Code Online (Sandbox Code Playgroud)
完整片段:
const data = [{
id: "txv3vvBr8KYB",
name: "room 1"
}, {
id: "txv3vvBr8KJB",
name: "room 2"
}, {
id: "txv3vvBr8K",
name: "room 4"
}, {
id: "txv3vvBr8LKP",
name: "room 3"
}, {
id: "txv3vvBr8LDS",
name: "room 5"
}];
const roomList = [{
room: {
code: "r001",
id: "txv3vvBr8KYB",
name: "room 1",
status: "FULL"
}
},
{
room: {
code: "r002",
id: "txv3vvBr8KJB",
name: "room 2",
status: "FULL"
}
},
{
room: {
code: "r003",
id: "txv3vvBr8LKP",
name: "room 3",
status: "FULL"
}
}
];
const ids = roomList.reduce((a, {room: {id}}) => (a.add(id), a), new Set());
const result = data.filter(({id}) => !ids.has(id));
console.log(result);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |