我有一個數組,我想轉換成一個對象。例如:Ramdajs keyBy相當於lodash
const arr = [{id: 1, key: ''}, {id: 2, key: ''}];
我想要得到的結果是:
const object = { 1: {id: 1, key: ''}, 2: { id: 2, key: ''}}
隨着lodash
我可以使用keyBy
功能,但我與ramda的工作,並沒有發現有這個功能。
我有一個數組,我想轉換成一個對象。例如: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);
使用'R.nthAr''和'R.prop'更新了答案,使它更加優雅。 – Bsalex
我想你想[groupBy](https://lodash.com/docs/4.17.4#groupBy)也許。 – elclanrs