Сравнить значения свойств 2-х объектов

У вас пуш происходит в цикле. Соответственно если мы берем первое свойство и оно удовлетворяет проверкам то объект весь объект заносится в массив. После этого мы проверяем второе свойство и если оно опять удовлетворяется этот же объект заносится в массив еще раз.
Вынесите filteredPins.push(location);
за пределы цикла for (var key in props) {