Учитывая ваши ограничения, я бы, вероятно, подошел к этому так (см. Комментарии):
// The array you import from another file
const array = [
{
key: '1234',
title: 'Column 1'
},
{
key: '5678',
title: 'Column 2'
},
{
key: '9101',
title: 'Column 3'
}
];
// Your renderers (raw numeric literals are valid, but since your keys are
// strings, I've used strings here)
const renderers = {
"1234": (props) => <Component1 {...props} />,
"9101": (props) => <Component1 {...props} />
};
// Map, **copying** rather than modifying the array's objects
const newColumns = array.map(entry => ({
...entry,
render: renderers[entry.key]
}));
Если хотите, вы можете использовать Map
вместо объекта, но если это стат c такую структуру, я бы, вероятно, go впереди использовал бы объект:
const renderers = new Map([
["1234", (props) => <Component1 {...props} />],
["9101", (props) => <Component1 {...props} />]
]);
, а затем
const newColumns = array.map(entry => ({
...entry,
render: renderers.get(entry.key)
}));