簡體   English   中英

比較兩個對象,僅返回第一個對象的匹配值

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM