Я не эксперт по Рамде или ФП, как ни крути, но кажется, что проще всего было бы передать нормальную функцию в R.compose
, которая добавляет свойство ячейки к каждому объекту до pick
свойства, которые вы хотите.
Дайте мне знать, если это работает для вас, или это анти-паттерн, и вы строго ищете встроенные модули Рамды.
// change title to whatever shape you desire
const customTitleTransformation = title => title
const arrayOfItems = [
{
id: 'some id 1',
isSelected: true,
title: 'some title 1',
text: 'some text',
description: 'some description'
},
{
id: 'some id 2',
isSelected: false,
title: 'some title 2',
text: 'some text',
description: 'some description'
},
]
// USING RAMDA
const normalizedItemsRamda = R.map(
R.compose(
R.pick(['id', 'isSelected', 'cells']),
// shallow copy, add cells property, return new updated object
item => R.assoc('cells', [customTitleTransformation(item.title), item.text], item)
)
)(arrayOfItems)
console.log('ramda result ', normalizedItemsRamda)
console.log('\n\nOriginal Items Unchanged:')
console.log(arrayOfItems);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.25.0/ramda.js"></script>