This question is similar to this one Jquery filter array of object with loop but this time I need to do the filter with an array of objects.
Exemple:
I have an array of objects like this:
myArray = [
{
userid: "100",
projectid: "10",
rowid: "0"
},
{
userid: "101",
projectid: "11",
rowid: "1"},
{
userid: "102",
projectid: "12",
rowid: "2"},
{
userid: "103",
projectid: "13",
rowid: "3"
},
{
userid: "101",
projectid: "10",
rowid: "4"
}
...]
I want to filter it with an array like this:
myFilter = [
{
userid: "101",
projectid: "11"
},
{
userid: "102",
projectid: "12"
},
{
userid: "103",
projectid: "11"
}]
and return this (the userid and the projectid in myFilter need to match the userid and the projectid in myArray):
myArrayFiltered = [
{
userid: "101",
projectid: "11",
rowid: "1"
},
{
userid: "102",
projectid: "12",
rowid: "2"
}]
How can I do that ?
You need to loop over your first array, and inside this loop, loop again inside the filter.
If userid and projectid are equals, you can add the row to your filtered array:
JSFIDDLE
based on @Renato his answer, but shorter:
You can use jquery map, this return one array of matches:
You can put a couple of array methods to use here -
filter
andsome
. They're available in all recent browsers, and there are polyfills available for the older browsers.With Ecma script 6.
Function:
Link to example