angularjs比较两个数组

时间:2015-03-18 22:26:52

标签: arrays angularjs

如何比较AngularJS中的两个数组,并返回匹配的值?

这是第一个数组:

[{
    "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"
}]

这是第二个:

[{
    "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"
}]

我想检查这两个数组中异类世界的值是否匹配。然后我可以从第二个数组中获得颜色值。

以下是我在控制器中输入的代码:

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);

        }
    });
});

我应该使用angular.forEach吗?我怎样才能做到这一点?我在哪里存储颜色值?

2 个答案:

答案 0 :(得分:12)

像puncan说的那样,这些都是对象数组而不是多维数组。在这里,我使用angulars .forEach方法遍历两个数组,然后比较对象属性。

我添加了一条评论,您可以在其中获得匹配的颜色。

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
        }
    });
});

这是fiddle

答案 1 :(得分:1)

如果您使用的是 ES6 ,那么:

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