我需要切片地圖。我有這樣的工作:在達特朗切片地圖
Map sliceMap(Map map, offset, limit) {
Map result = new Map();
if (map.length < limit) {
limit = map.length;
}
map.keys.toList().getRange(offset, limit).forEach((key) {
result[key] = map[key];
});
return result;
}
有沒有更有效的方法和/或內置的方式?我在API中找不到任何內容(https://api.dartlang.org/stable/1.21.0/dart-core/Map-class.html)。
從aelayeb解決方案:
Map sliceMap(Map map, offset, limit) {
return new Map.fromIterables(
map.keys.skip(offset).take(limit - offset),
map.values.skip(offset).take(limit - offset)
);
}
由於地圖的鑰匙在一個不確定的順序,如何有效將這個實際上是? –
@RandalSchwartz對於'Map',鍵的順序是維護的。例如,像「HashMap」這樣的所有地圖都不是這種情況。 –
保持但未定義。說「增加按鍵順序」,你不能要求切片。因此,這樣的一部分將會有未定義和相對無用的語義。可能最好退後一步,問自己:「爲什麼我需要一個切片?」並找出不需要的答案。 –