var wordEnding = {1: ' 1 ', 2: '-x ', 3: '-x ', 4: '-x ', 5: '-ти ', 6: '-ти ', 9: '-ти ', 7: '-ми ', 8: '-ми '};
result = value.type + ' ' +value.rooms + (wordEnding[value.rooms] || '') + 'комн.';
И еще такой момент - в твоем первом варианте скрыт дефект - лишняя проверка. Используй else, чтобы по возможности не выполнять лишних проверок, если какое-то условие подошло. Кроме того, если бы использовались какие-то пересекающиеся условия, то ты бы мог получить исполнение нескольких условных блоков, что является ошибкой.