2017-05-15 4 views
0

Ich habe zwei Arrays von Objekten, hList und sList. Ich versuche, jedes Objekt in sList eine Eigenschaft zu geben, die einem hList.ID entspricht, wenn einer existiert und nicht bereits festgelegt ist. Bin irgendwie in der Logik verwirrt, kann mir jemand helfen?Wie wird eine Eigenschaft eines Objekts mit einer Eigenschaft eines Array von Objekten verglichen?

var sList=[{name:"s1",id:"a"},{name: "s2",id:"b"},{name: "s3",id:"c"},{name: "s4",id:"d"}]; 
    var hList=[{name: "h1",id:"x"},{name: "h2",id:"y"},{name: "h3",id:"z"}]; 

so weit ich habe:

try{  
    for(i in sList) 
    { 
    var s=sList[i]; 
    //find hList object that matches sList.id value 
    var h=_.filter(hList.id,function(i){return(i==s.hID)}); 
    //if no hList.id match the sList.hID 

    //find hList object that doesnt match any 

    //set the source id to the hList object id 

    } 

}catch(err){console.log("err: ",err);} 

ZIEL: (nur ein hList.id kann eine sList.hID übereinstimmen Wenn ein hList.id doesnt existieren die sList.hID undefiniert sein sollte..)

var sList=[{name:"s1",id:"a",hID:"x"},{name: "s2",id:"b",hID="y"},{name: "s3",id:"c",hID="z"},{name: "s4",id:"d",hID=undefined}]; //goal: set sList.hID to match an hList.id 
var hList=[{name: "h1",id:"x"},{name: "h2",id:"y"},{name: "h3",id:"z"}]; 

Antwort

0

var sList=[{name:"s1",id:"a"},{name: "s2",id:"b"},{name: "s3",id:"c"},{name: "s4",id:"d"}]; 
 
var hList=[{name: "h1",id:"x"},{name: "h2",id:"y"},{name: "h3",id:"z"}]; 
 
    
 
    
 
sList = sList.map((item, index) => { 
 
    item.hId = hList[index] ? hList[index].id : undefined; 
 
    return item 
 
}) 
 

 
console.log(sList);

+0

Das hat super funktioniert, ich werde auf der 'map' Funktion nachlesen müssen. Vielen Dank! – Rilcon42

Verwandte Themen