Если это не упражнение в изучении Рамды, я бы предположил, что более простой метод, чем то, что вы, вероятно, придумаете из Рамды, - это простой подход к деструктуризации объектов:
const transform = ({tel, bday, email, ...rest}) => ({
...rest, tel, bday, email,
contactDetails: [bday, email, tel].join(' ').trim()
})
const obj = {firstName: 'John', lastName: 'Doe', tel: '555-55-5555', bday: '', email: 'john@doe.com'}
console.log(transform(obj))
Эта версия не зависит от того, присутствует ли ключ contactDetails
, хотя он не повредит, если он там есть.
Если вы 'Вы действительно беспокоитесь о возможном двойном пробеле между словами (например, если указаны bday
и tel
, но email
пусто), вы можете изменить его следующим образом:
const combine = (ss) => ss.reduce((a, s) => a + (s.length ? ' ' : '') + s, '').trim()
const transform = ({tel, bday, email, ...rest}) => ({
...rest, tel, bday, email,
contactDetails: combine([bday, email, tel])
})
Я один из основателей Ramda и большой поклонник, но это всего лишь инструментарий.Есть много мест, где это помогает сделать ваш код легче читать и писать;во что бы то ни стало используйте это тогда.Но когда этого не происходит, даже в кодовой базе, интенсивно использующей Ramda, пропустите ее и используйте другие методы.