简体   繁体   English

基于javascript中具有多个数组的另一个对象的过滤来过滤数组

[英]Filter Array based on the Filtering of Another Object having Multiple array in javascript

I have an array of objects. 我有一个对象数组。 i want to filter array based the object has the condition. 我想基于对象具有条件的数组进行过滤。

my array is as follow : 我的数组如下:

var data = [
{
  "name": "nitin",
  "r_id": "1",
  "t_id": "4"
},
{
 "name": "test",
  "r_id": "2",
  "t_id": "3"
},
{
  "name": "test1",
  "r_id": "2",
  "t_id": "4"
},
{
  "name": "test3",
  "r_id": "3",
  "t_id": "3"
},
{
  "name": "test2",
  "r_id": "1",
  "t_id": "1"
}]

and my object is as follows : 我的对象如下:

var obj = {
role:['1','2'],
type:['1','3']
}

where r_id is the role id and t_id is the type id 其中r_id是角色ID,t_id是类型ID

so i want the results whose role id is in 1 or 2 AND type id is in 1 or 3. 所以我想要角色ID为1或2而类型ID为1或3的结果。

so mathematically role_id && type_id ((1||2)&&(1||3)) 因此在数学上是role_id && type_id((1 || 2)&&(1 || 3))

my output should like: 我的输出应为:

var result = [
{
  'name':'test',
  'r_id':2,
  't_id':3,
},
{
  'name':'test2',
  'r_id':1,
  't_id':1,
}];

 var data = [ { "name": "nitin", "r_id": "1", "t_id": "4" }, { "name": "test", "r_id": "2", "t_id": "3" }, { "name": "test1", "r_id": "2", "t_id": "4" }, { "name": "test3", "r_id": "3", "t_id": "3" }, { "name": "test2", "r_id": "1", "t_id": "1" }] var obj = { role:['1','2'], type:['1','3'] } let result = data.filter(item=>{ return obj.role.indexOf(item.r_id) > -1 && obj.type.indexOf(item.t_id) > -1 }) console.log(result) 

You just need to iterate your data and see if the keys ( r_id and t_id ) are present in the obj (in the respective arrays). 您只需要迭代data并查看键( r_idt_id )是否存在于obj (在相应的数组中)。 For this you can use Array.filter 为此,您可以使用Array.filter

 var data = [{"name":"nitin","r_id":"1","t_id":"4"},{"name":"test","r_id":"2","t_id":"3"},{"name":"test1","r_id":"2","t_id":"4"},{"name":"test3","r_id":"3","t_id":"3"},{"name":"test2","r_id":"1","t_id":"1"}] var obj = { role:['1','2'], type:['1','3'] } var result = data.filter(function(element){ return obj.role.indexOf(element.r_id) !== -1 && // element has valid role obj.type.indexOf(element.t_id) !== -1 // element has valid type }) console.log(result) 

 var data = [ { "name": "nitin", "r_id": "1", "t_id": "4" }, { "name": "test", "r_id": "2", "t_id": "3" }, { "name": "test1", "r_id": "2", "t_id": "4" }, { "name": "test3", "r_id": "3", "t_id": "3" }, { "name": "test2", "r_id": "1", "t_id": "1" }] var obj = { role:['1','2'], type:['1','3'] } var filterItems = data.filter(function(o){ return obj.role.indexOf(o.r_id) != -1 && obj.type.indexOf(o.t_id) != -1; }); console.log(filterItems); 

You could change obj a bit, for corresponding property names in the data, you have, then use Array#filter and check with Array#every for wanted item. 您可以稍微更改obj ,以获取数据中的相应属性名称,然后使用Array#filter并与Array#every一起检查所需项目。

 var data = [{ name: "nitin", r_id: "1", t_id: "4" }, { name: "test", r_id: "2", t_id: "3" }, { name: "test1", r_id: "2", t_id: "4" }, { name: "test3", r_id: "3", t_id: "3" }, { name: "test2", r_id: "1", t_id: "1" }], obj = { r_id: ['1', '2'], t_id: ['1', '3'] }, keys = Object.keys(obj), result = data.filter(function (o) { return keys.every(function (k) { return obj[k].indexOf(o[k]) !== -1; }); }); console.log(result); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Javascript 滤波器阵列基于另一个阵列 object - Javascript filter array based on another array of object 基于另一个数组过滤javascript对象数组-Javascript - Filter javascript object array based on another array -Javascript javascript如何根据另一个对象数组过滤对象数组 - javascript how to filter an object array based on another object array 如何过滤 object 的数组并根据另一个数组过滤掉值? 过滤应该基于键而不是值 - How to filter array of object and filter out values based on another array? Filtering should happen based on keys not values 如何使用JavaScript根据另一个数组值过滤对象数组? - How to filter array of object based on another array values using javascript? 从另一个数组中过滤 object 的数组,在 javascript 中有多个元素 - filter array of object from another array with multiple elements in javascript Javascript数组过滤器未过滤 - Javascript Array filter not filtering 如何根据 Javascript 中的另一个 object 过滤对象数组 - How to filter array of objects based on another object in Javascript 根据 javascript 中的另一个数组过滤对象数组 - Filter array of objects based on another array in javascript 基于另一个数组过滤对象数组返回新数组javascript - filtering an array of objects based on another array returning new array javascript
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM