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(子句))