[英]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並且沒有在那里找到這個功能。
如果有人仍然通過搜索找到這個,正確的答案是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'}}
也可以看看:
我可以用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);
你可以用非常基本的reduce函數來解決這個問題。
function keyBy(entities, id = "id") {
return entities.reduce((acc, entity) => {
acc[entity[id]] = entity;
return acc;
}, {});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.