在 Dartlang 中切片地图
Slice a Map in 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;
}
有没有更高效的方法and/or内置的方法?我在 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)
);
}
以下是我认为有价值的方法:
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]);
}
我需要对地图进行切片。我让它像这样工作:
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;
}
有没有更高效的方法and/or内置的方法?我在 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)
);
}
以下是我认为有价值的方法:
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]);
}