As I have already commented, second one looks more like an Object, not an array. It has to be initialized as var second = {Name: "kd", State: "test", Address1: "tt"};
Your final output would be in a Array() which is enclosed in an Object called finlObj. Please find the below code. You can optimize the code. But for your understanding, i did in a elaborate way:
var second = {Name: "kd", State: "test", Address1: "tt"};
var first = ["Name", "Address1", "Address2", "City", "State", "Zip Code", "Formatted Address"];
var finlObj ={specList:[]};
for(var elem in first){
if(second[first[elem]] !== undefined && second[first[elem]] !== null){
finlObj.specList[finlObj.specList.length] = second[first[elem]];
}
}
for(var el in finlObj.specList){
alert(finlObj.specList[el]);
}