В первом цикле просто копируем первый массив в третий (впрочем, это можно сделать и без цикла).
Во втором цикле пробегаем по всем элементам второго массива. Запрашиваем в третьем массиве элемент с таким именем. Если его нет (undefined) - то копируем элемент второго массива в третий. Если же элемент с таким именем в третьем массиве есть - то присваиваем элементу третьего массива "то значение, которое ближе" (эту фразу я не понял).
извилинку сверху делаешь создавая блок с bg: white, z-index выше выпадающей менюхи, и посишн absolute. Тоже делал такую, с извилинкой сверху траблы были.