Ramdajs keyBy 相当于lodash
Ramdajs keyBy equivalent of lodash
我有一个要转换为对象的数组。例如:
const arr = [{id: 1, key: ''}, {id: 2, key: ''}];
我想要的结果是:
const object = { 1: {id: 1, key: ''}, 2: { id: 2, key: ''}}
使用 lodash
我可以使用 keyBy
功能,但我正在使用 ramda 并且在那里没有找到此功能。
您可以使用非常基本的 reduce 函数解决此问题。
function keyBy(entities, id = "id") {
return entities.reduce((acc, entity) => {
acc[entity[id]] = entity;
return acc;
}, {});
}
如果有人仍然通过搜索找到它,正确答案是 indexBy
,于 2016 年年中添加。
const list = [
{ id: "xyz", title: "A" },
{ id: "abc", title: "B" },
];
R.indexBy(R.prop("id"), list);
//=> {abc: {id: 'abc', title: 'B'}, xyz: {id: 'xyz', title: 'A'}}
另请参阅:
我有一个要转换为对象的数组。例如:
const arr = [{id: 1, key: ''}, {id: 2, key: ''}];
我想要的结果是:
const object = { 1: {id: 1, key: ''}, 2: { id: 2, key: ''}}
使用 lodash
我可以使用 keyBy
功能,但我正在使用 ramda 并且在那里没有找到此功能。
您可以使用非常基本的 reduce 函数解决此问题。
function keyBy(entities, id = "id") {
return entities.reduce((acc, entity) => {
acc[entity[id]] = entity;
return acc;
}, {});
}
如果有人仍然通过搜索找到它,正确答案是 indexBy
,于 2016 年年中添加。
const list = [
{ id: "xyz", title: "A" },
{ id: "abc", title: "B" },
];
R.indexBy(R.prop("id"), list);
//=> {abc: {id: 'abc', title: 'B'}, xyz: {id: 'xyz', title: 'A'}}
另请参阅: