Javascript 基于值在两个对象数组之间过滤
我尝试在两个对象数组之间进行筛选:Javascript 基于值在两个对象数组之间过滤,javascript,Javascript,我尝试在两个对象数组之间进行筛选: group: [ { key: "Global ID", value: "gid" }, { key: "Super ID", value: "sid" }, { key: "Duper ID", value: "did" }, { key: "Application", value:
group: [
{ key: "Global ID", value: "gid" },
{ key: "Super ID", value: "sid" },
{ key: "Duper ID", value: "did" },
{ key: "Application", value: "app" },
{ key: "Category", value: "cat" },
{ key: "Subcategory", value: "sub" },
{ key: "Name", value: "name" },
],
whereClause: [
{ k: "gid", op: "=", v: "111" },
{ k: "sid", op: "=", v: "1" },
{ k: "did", op: "=", v: "2" },
{ k: "app", op: "IN", v: ["asd", "dfg"] },
{ k: "cat", op: "=", v: "hjk" },
{ k: "sub", op: "=", v: "errors" },
{ k: "name", op: "=", v: "mo" },
],
基本上,这个想法是-用户从“group”数组中选择多个值,它们存储在“selectedGroup”数组中,点击按钮时,应该有一个过滤器,从“Where子句”数组中获取与“selected”内容匹配的对象数组
-值==k
。
我尝试过这样过滤它们:
where: this.whereClause.filter(
(clause) => clause.k == this.selectedGroup
),
但每次用户选择多个项目时,都会清空筛选值的内容…要么只有一个项目:
==this.selectedGroup
或者selectedGroup
是一个数组,因此我们需要搜索其中的项目:
(clause) => this.selectedGroup.some((selectedItem) =>
selectedItem ==clause.k)
试试这个
var组=[
{键:“全局ID”,值:“gid”},
{键:“超级ID”,值:“sid”},
{key:“Duper ID”,value:“did”},
{键:“应用程序”,值:“应用程序”},
{key:“Category”,value:“cat”},
{键:“子类别”,值:“子”},
{键:“名称”,值:“名称”},
];
var where子句=[
{k:“gid”,op:“=”,v:“42501”},
{k:“sid”,op:“=”,v:“1”},
{k:“做过”,op:=”,v:“2”},
{k:“应用程序”,op:“IN”,v:[“hss”,“smsc”]},
{k:“猫”,op:“=”,v:“lte”},
{k:“sub”,op:“=”,v:“errors”},
{k:“名称”,op:“=”,v:“mo”},
];
var selectedGroup=[
{key:“Duper ID”,value:“did”},
{键:“应用程序”,值:“应用程序”},
];
var output=this.whereClause.filter((子句)=>this.selectedGroup.some((已选)=>
selected.value==子句.k));
控制台日志(输出)
您也有一些数据吗?.filter(子句=>this.selectedGroup.includes(子句))
?