Вы можете определить вспомогательную функцию, которая закрывает данные, и возвращать отформатированное значение:
const filterData = data => formatter => data.map( item => ({
text: formatter(item),
value: formatter(item)
});
И далее, в вашем определении columns
:
const columns = [{
title: 'Name',
dataIndex: 'name',
filters: filterData(data)(i => i.name),
// ...
Логика подменю немногоболее сложный, однако вы можете сделать что-то вроде:
const splitName = index => dataItem => dataItem.name.split(" ")[index];
const columns = [{
title: 'Name',
dataIndex: 'name',
filters: [
...filterData(data)(splitName(0)),
{
text: 'Submenu',
value: 'Submenu',
children: filterData(data)(splitName(1))
}
],
Надеюсь, это поможет.