Filter array of objects with another array of objects

前端 未结 9 1759
小蘑菇
小蘑菇 2020-11-27 05:18

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

9条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-11-27 06:06

    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:

    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"
    }];
    myFilter = [{
        userid: "101",
        projectid: "11"
    }, {
        userid: "102",
        projectid: "12"
    }, {
        userid: "103",
        projectid: "11"
    }];
    
    function filterArray(array, filter) {
        var myArrayFiltered = [];
        for (var i = 0; i < array.length; i++) {
            for (var j = 0; j < filter.length; j++) {
                if (array[i].userid === filter[j].userid && array[i].projectid === filter[j].projectid) {
                    myArrayFiltered.push(array[i]);
                }
            }
        }
        return myArrayFiltered;
    }
    myArrayFiltered = filterArray(myArray, myFilter);
    console.log(myArrayFiltered);
    

    JSFIDDLE

提交回复
热议问题