compare 2 arrays

by spacexplorer

JavaScript

oldArray = new Array({name:"aaaa",age:12},{name:"bbbbb",age:13},{name:"cccc",age:14},{name:"ffff",age:18});
newArray = new Array({name:"aaaa",age:88},{name:"cccc",age:14},{name:"dddd",age:15},{name:"xxxx",age:66},{name:"ffff",age:88});


//update oldArray with NewArray

str = "> start...7<br/>"

//delete AND update
str += "> test delete+update...<br/>"

del = false;    
    
    //loop through old --create tempArray
 for(i=0; i<oldArray.length; i++){
     str += "> i"+i+"/"+oldArray.length+":"+oldArray[i].name+"<br/>";    
     for(n=0; n<newArray .length; n++){
         //find in new
         if((oldArray[i].name) == (newArray[n].name)){
             str += "found: "+oldArray[i].name+" at "+n+"<br/>";
             del = false; 
             //test change
             if (oldArray[i].age != newArray[n].age) {
                 str += "> update "+oldArray[i].age+" to "+newArray[n].age+"<br/>"
                 oldArray[i].age = newArray[n].age;
             }
             break;
         }else{
             del = true;
         }
     }
     if (del == true){
         str += "did not find: "+oldArray[i].name+"<br/>";
         oldArray.splice(i,1);
         //reset counter -1
         i = i-1;
     }             
 }

   
    
    
    
    
//add  
var add = false;
str += "> add...<br/>";
for(n=0; n<newArray.length; n++){
    add = true;
    for(i=0; i<oldArray.length; i++){
        if((oldArray[i].name) == (newArray[n].name)){
            add = false;
            //str += "new "+newArray[n].name+" at "+n;
            //found it - don't look further
            break;  
        }
    }
    if (add == true)
    {
        oldArray.push(newArray[n]);   
    }  
}
    
     
    
str += "> test output...<br/>"
    
for(i=0; i<oldArray.length; i++){
    str += oldArray[i].name+":"+oldArray[i].age+"<br/>";
}


document.write(str);