比较两个对象并仅返回第一个对象的匹配值

时间:2016-06-08 15:28:44

标签: javascript angularjs

我想在两个对象之间进行比较,并且应该返回第一个对象中的匹配值。例如:

对象1

[{
  "sex": "Male",
  "name": "Thomas",
  "country": "China"
}, {
  "sex": "Male",
  "name": "George",
  "country": "Nigeria"
}, {
  "sex": "Male",
  "name": "Mark",
  "country": "Serbia"
}, {
  "sex": "Male",
  "name": "Ronald",
  "country": "China"
}, {
  "sex": "Female",
  "name": "Jennifer",
  "country": "China"
}]

对象2

[{
  "sex": "Male",
  "country": "China"
}]

结果对象应该是,

[{
  "sex": "Male",
  "name": "Thomas",
  "country": "China"
}, {
  "sex": "Male",
  "name": "Ronald",
  "country": "China"
}]

有没有可能做到这一点。如果是的话,你能告诉我该怎么做吗?

4 个答案:

答案 0 :(得分:0)

创建数组以保存结果

遍历两个对象

如果一个元素angular.equals另一个元素,则将其添加到reuslt数组

返回结果数组。

答案 1 :(得分:0)

您可以使用lodash _.filter https://lodash.com/docs#filter

var results = _.filter([{
  "sex": "Male",
  "name": "Thomas",
  "country": "China"
}, {
  "sex": "Male",
  "name": "George",
  "country": "Nigeria"
}, {
  "sex": "Male",
  "name": "Mark",
  "country": "Serbia"
}, {
  "sex": "Male",
  "name": "Ronald",
  "country": "China"
}, {
  "sex": "Female",
  "name": "Jennifer",
  "country": "China"
}], {
  "sex": "Male",
  "country": "China"
})

答案 2 :(得分:0)

试试这个

public void printReverseList(Node head) {
            if(head == null) return;
            Node prev = null;
            Node revers = head;
            Node nex = null;

            while (revers != null){
                nex = revers.next;
                revers.next = prev;

                prev = revers;
                revers = nex;

            }
            System.out.println(prev);
        }

答案 3 :(得分:0)

使用unserscore.js

检查以下干净利落的解决方案



var a = [{
  "sex": "Male",
  "name": "Thomas",
  "country": "China"
}, {
  "sex": "Male",
  "name": "George",
  "country": "Nigeria"
}, {
  "sex": "Male",
  "name": "Mark",
  "country": "Serbia"
}, {
  "sex": "Male",
  "name": "Ronald",
  "country": "China"
}, {
  "sex": "Female",
  "name": "Jennifer",
  "country": "China"
}];

var b = [{
  "sex": "Male",
  "country": "China"
}];

var result = [];

// IN CASE B IS ARRAY OF OBJECT
_.each(b, function(item, index) {
  Array.prototype.push.apply(result, _.where(a, item));
});

// result contains all the matched objects
console.log(result);

// IN CASE IF B IS SINGLE OBJECT
result = [];
Array.prototype.push.apply(result, _.where(a, b[0]));
// result contains all the matched objects
console.log(result);

<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
&#13;
&#13;
&#13;