我有车辆清单:
function openTab(url) {
// Create link in memory
var a = window.document.createElement("a");
a.target = '_blank';
a.href = url;
// Dispatch fake click
var e = window.document.createEvent("MouseEvents");
e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
a.dispatchEvent(e);
};
openTab('http://www.google.com');
我现在想将此列表转换为Map,其中键是partId,值是具有该部分的所有汽车。
val cars = List(car1, car2, car3, car4, car5)
case class car(model: String, age: Int, partIds: Seq[String])
答案 0 :(得分:2)
您需要使用中间类型跳过一些箍。解决方案是首先从List [Car]进入List [PartId - >汽车]。放下零件的部件可以让您的生活更轻松。您可以轻松地对汽车进行分组。
mapValues是Map上的一个函数。它将遍历每个元组,并且需要一些函数,其类型等于Map的值...在我的情况下,在mapValues之前我有一个Map [String,List [String - >汽车]]。
mapValues想要一个带签名的函数(carMapping:List [(String,Car)):A ......我们想要的类型当然是List [Car]
这是关于groupBy的一些内容,关于mapValues:http://markusjais.com/the-groupby-method-from-scalas-collection-library/
(function x() {
var name = null;
console.log(name);
}());
答案 1 :(得分:1)
cars flatMap ( x => x.partIds map ((_, x))) groupBy (_._1) mapValues (_ map (_._2))