angularjs compare two arrays

All we need is an easy explanation of the problem, so here it is.

How I can compare two arrays in AngularJS, and return the matching values?

Here is the first array:

[{
    "id":2,
    "student_name":"LiSa",
    "alien":"A",
    "world":"Sun",
    "justification":"i like sent this one",
    "submit_time":null
},{
    "id":1,
    "student_name":"Liz",
    "alien":"B",
    "world":"Earth",
    "justification":null,
    "submit_time":"2014-09-25T08:37:34.526-05:00"
}]

Here is the second one:

[{
    "id":1,
    "alien":"A",
    "world":"Sun",
    "color":"red"
},{
    "id":2,
    "alien":"A",
    "world":"Mercury",
    "color":"red"
},{
    "id":3,
    "alien":"B",
    "world":"Earth",
    "color":"red"
},{
    "id":4,
    "alien":"B",
    "world":"Moon",
    "color":"red"
}]

I want to check if the values for alien and world are matching in these two arrays. Then I can get the color value from the second array.

Here is the code I put in the controller:

angular.forEach(arr1, function(value1, key1) {
    angular.forEach(arr2, function(value2, key2){
        if(value1.alien === value2.alien && value1.world === value2.world){
            console.log(value2.color);

        }
    });
});

Shall I use angular.forEach? How can I do that? And where do I store the color value?

How to solve :

I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.

Method 1

Like duncan said, these are both arrays of objects and not multi-dimensional arrays. Here I use angulars .forEach method to loop through both arrays then compare the object properties.

I’ve added a comment where you would get your matching color.

angular.forEach(arr1, function(value1, key1) {
    angular.forEach(arr2, function(value2, key2) {
        if (value1.alien === value2.alien && value1.world === value2.world) {
            // here is where you grab the value2.color
        }
    });
});

Here’s a fiddle

Method 2

And if you are using ES6 then:

array1.forEach((elem1, index) => {elem1;
  array2.forEach((elem2, index) => {elem2;
    if(elem1.someProp=== elem2.someProp)
    {
     //--If elem1 equal elem2
    }
  });
});

Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply