Underscore.js有一个函数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} }
在Scala中编写此内容的最佳方式是什么?
答案 0 :(得分:1)
final case class Stooge(name: String, age: Int)
val stooges = Seq(Stooge("moe", 40), Stooge("larry", 50))
val result = stooges.map(s => s.age -> s).toMap
println(result)
// Map(40 -> Stooge(moe,40), 50 -> Stooge(larry,50))