[英]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.