在Dartlang中切片地图



我需要切片地图。我已经这样做了:

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-corn/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)
  );
}

这是我值得的方法:

new Map.fromIterables(
    map.keys.skip(offset).take(limit),
    map.values.skip(offset).take(limit)
);

与此相关,您不必进行极限测试。

您可以使用:

Map sliceMap(Map map, offset, limit) {
  return new Map.fromIterable(map.keys.skip(offset).take(limit),
      value: (k) => map[k]);
}

最新更新