var s = 'Hello!'.split('').join('-');
// значение переменной s теперь 'H-e-l-l-o-!'.split(), который разбивает её в массив. Если бить по разделителю "пустая строка", то получится массив из букв: ['H', 'e', 'l', 'l', 'o', '!'].join() Ему параметром передаётся разделитель.['H', 'e', 'l', 'l', 'o', '!'].join('-') и получается желаемая строка, где буквы через дефис!
Имхо не продуманы все условия задачи. Есть ещё масса параметров совместимости – район, цена метра, этаж, наличие лифта, возраст дома, и др. – которые дают каждому потенциальному звену сделки (паре куплю–продаю) свой вес несовпадения. И в поиске будет интересовать минимизация этого веса.