Ramdajs键相当于lodash

und*_*ned 2 javascript ramda.js

我有一个要转换为对象的数组。例如:

const arr = [{id: 1, key: ''}, {id: 2, key: ''}];
Run Code Online (Sandbox Code Playgroud)

我希望结果是:

const object = { 1: {id: 1, key: ''}, 2: { id: 2, key: ''}}
Run Code Online (Sandbox Code Playgroud)

随着lodash我可以使用的keyBy功能,但我有工作ramda并没有在那里找到此功能。

Pat*_*ick 6

万一仍然有人可以通过搜索找到答案,则正确答案为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'}}
Run Code Online (Sandbox Code Playgroud)

也可以看看:


Baz*_*nga -1

您可以使用非常基本的reduce 函数来解决这个问题。

function keyBy(entities, id = "id") {
    return entities.reduce((acc, entity) => {
      acc[entity[id]] = entity;
      return acc;
    }, {});
}
Run Code Online (Sandbox Code Playgroud)