下划线具有整洁的函数indexBy
,用于将数组映射到特定键上。从文档中:
_。indexBy(列表,迭代器,上下文)
给出一个列表,并为列表中的每个元素(或属性名称)返回一个键的iteratee函数,返回一个具有每个项目索引的对象。就像groupBy一样,但是当您知道自己的键是唯一的时。
使用示例:
var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
_.indexBy(stooges, 'age');
=> {
"40": {name: 'moe', age: 40},
"50": {name: 'larry', age: 50},
"60": {name: 'curly', age: 60}
}
在没有库的纯ES6中怎么写?
答案 0 :(得分:1)
此函数使用_.indexBy
和iteratee
实现context
的完整定义:
function indexBy(list, iteratee, context) {
return list.reduce((map, obj) => {
const key = typeof iteratee === 'string' ? obj[iteratee] : iteratee.call(context, obj);
map[key] = obj;
return map;
}, {});
}