Ramdajs keyBy相当于lodash
问题描述:
我有一个数组,我想转换成一个对象。例如:Ramdajs keyBy相当于lodash
const arr = [{id: 1, key: ''}, {id: 2, key: ''}];
我想要得到的结果是:
const object = { 1: {id: 1, key: ''}, 2: { id: 2, key: ''}}
随着lodash
我可以使用keyBy
功能,但我与ramda的工作,并没有发现有这个功能。
答
你可以用非常基本的功能,减少解决这个问题。
function keyBy(entities, id = "id") {
entities.reduce((acc, entity) => {
acc[entity[id]] = entity;
return acc;
}, {});
}
答
最优雅的方式我可以ramda得到这样的:
const arr = [{id: 1, key: '1'}, {id: 2, key: '1'}, {id: 2, key: '2'}];
const reduceToIds = R.reduceBy(R.nthArg(1), [], R.prop('id'));
reduceToIds(arr);
+0
使用'R.nthAr''和'R.prop'更新了答案,使它更加优雅。 – Bsalex
我想你想[groupBy](https://lodash.com/docs/4.17.4#groupBy)也许。 – elclanrs