![](/img/trans.png)
[英]How can I compare two objects and reassign the second object only with the properties that are different from the first object?
[英]Compare two objects and return only the matched values from the first object
我想在两个对象之间进行比较,并且应该返回第一个对象中的匹配值。 例如:
对象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"
}]
有没有可能这样做。 如果是的话,您能告诉我怎么做吗?
创建数组以保存结果
遍历两个对象
如果一个元素与另一个元素相等,则将其添加到reuslt数组中
返回结果数组。
您可以使用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"
})
尝试这个
var firstObject = [{
"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 secondObject = [{
"sex": "Male",
"country": "China"
}]
var finalArray=[];
for (var i=0 ; i < firstObject.length ; i++){
for(var k=0 ; k <secondObject.length ; k++){
if((secondObject[k].sex == firstObject[k].sex) && (secondObject[k].country == firstObject[k].country)){
finalArray.push(firstObject[k]);
}
}
}
使用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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.