2017-02-16 104 views
-1

我有一个函数可以进行两次ajax调用。一次调用返回一个包含其他对象的Object;另一个是一组对象。遍历对象与其他对象进行比较

//Object 1 
1: { 
    table_info: { 
     id: "1", 
     event_id: "JHDQ", 
     name: "test", 
     cap: "10", 
     seating: "OPEN", 
     updated: "2017-02-12 16:34:01", 
     position_x: "10", 
     position_y: "99", 
     count: 2 
    }, 
    assignments: [{ 
     participant_id: "99154143", 
     seat_number: "2" 
     }, 
     { 
     participant_id: "99154149", 
     seat_number: "3" 
     } 
    ] 
    }, 
    3: { 
    table_info: { 
     id: "3", 
     event_id: "JHDQ", 
     name: "test", 
     cap: "10", 
     seating: "OPEN", 
     updated: "2017-02-12 16:17:00", 
     position_x: "10", 
     position_y: "99", 
     count: 2 
    }, 
    assignments: [{ 
     participant_id: "99154146", 
     seat_number: "2" 
     }, 
     { 
     participant_id: "99155361", 
     seat_number: "3" 
     } 
    ] 
    } 

//Object 2 
{ 
    id: "99155361", 
    first_name: "gary", 
    last_name: "banker", 
    email: "test2", 
    company: null 
}, { 
    id: "99155365", 
    first_name: "tim", 
    last_name: "banker", 
    email: "test1", 
    company: null 
} 

我需要遍历对象1才能到达赋值数组。对于assignments数组中的每个索引,我需要将participant_id与对象2中的每个ID进行比较。如果匹配,则为alert(“match”),否则为alert(“no match”)。请让我知道我为了达到这个目标需要做什么?

+1

你可以包括'javascript',你已经试过在问题? – guest271314

+0

请参阅http://stackoverflow.com/help/how-to-ask,http://stackoverflow.com/help/mcve – guest271314

+0

您需要遍历每个返回的值。你可以在object1上使用'forEach'。在'forEach'中,你需要遍历任务列表,可能使用另一个'forEach'或者'for'。在该循环中,循环访问object2并在if/else语句中使用'==='在当前赋值'participant_id'和当前object2'id'之间进行简单的字符串比较。如果找到匹配的警报,则返回警报。 – haxxxton

回答

0
//object with assignments 
var objects = {}; 
//array of assignmenents 
var objArray = []; 
//foreach key on first object find assignements 
Object.keys(objects).forEach(function(key) { 
    var assignments = objects[key].assignments || []; 
    //foreach assignment id match against id in the other array 
    assignments.forEach(function(assignment){ 
    objArray.forEach(function(oAssignment){ 
     if(assignment['participant_id'] === oAssignment.id){ 
     alert('Found match for: ' + assignment['participant_id']); 
     } 
    }); 
    }); 
}); 
+1

是否有任何理由为什么你选择Object.keys(objects).forEach(function(key)'而不是'for(var key in objects)'? –

+0

否。事实上,我之前使用过,但我认为Object。键读得更好,只是个人喜好。 – VinPro