dart - 移动列表中的元素?
问题描述
考虑:['A', 'B', 'C']
我想做
list.move("B", -1);
list.move("A", 1);
导致["B", "C", "A"]
.
是否有某种班轮可以在 Dart 列表中移动项目?显然可以在几行中手动执行此操作,只是好奇是否有一些更简单的方法。
解决方案
线性?我认为没有。无论如何,这里有一个示例代码:
extension on List<String> {
void move(String element, int shift) {
if (contains(element)) {
final curPos = indexOf(element);
final newPos = curPos + shift;
if (newPos >= 0 && newPos < length) {
removeAt(curPos);
insert(newPos, element);
}
}
}
}
void main(List<String> args) {
var list = ['A', 'B', 'C', 'D', 'E', 'F'];
print(list);
list.move('B', 2);
print(list);
list.move('B', -3);
print(list);
}
结果:
[A, B, C, D, E, F]
[A, C, D, B, E, F]
[B, A, C, D, E, F]
推荐阅读
- javascript - 未捕获(承诺中):TypeError:无法读取未定义的属性“userSubject”类型错误:无法读取未定义的属性“userSubject”
- database - 在 mongodb 中查找特定内容
- html - 如何使用 VBA 从嵌套的 Div 中抓取
- ios - 如何修复各种不支持 Mac Catalyst 的 CocoaPods
- python - 使用浮点索引对 numpy 数组进行采样(类似于 pytorch grid_sample)
- php - 将 laravel 项目上传到生产服务器
- react-native - 如何在导航 5 中制作自定义标题栏?
- php - 删除 myaccount 页面中的 WooCommerce noindex 元数据
- c - 分配 struct file_operations 字段时从不兼容的指针类型初始化
- c - 将C中文件中的每个单词都大写