【发布时间】:2021-09-15 19:25:00
【问题描述】:
我有一个字符串列表为List<String> temp = ['a', 'b', 'c', 'd'];
我想修改并从列表中删除特定项目,并返回没有删除项目的新列表。
例如,如果我想删除索引2,我想得到的是['a', 'b', 'd']
removeAt 不起作用,因为它只是返回已删除的字符串项...
【问题讨论】:
我有一个字符串列表为List<String> temp = ['a', 'b', 'c', 'd'];
我想修改并从列表中删除特定项目,并返回没有删除项目的新列表。
例如,如果我想删除索引2,我想得到的是['a', 'b', 'd']
removeAt 不起作用,因为它只是返回已删除的字符串项...
【问题讨论】:
您可以使用级联表示法 (https://dart.dev/guides/language/language-tour#cascade-notation),在调用 removeAt 时返回列表。
void main() {
print(['a', 'b', 'c', 'd']..removeAt(2));
}
【讨论】:
temp.removeAt(index); 正是您想要的。
void main() {
List<String> temp = ['a', 'b', 'c', 'd'];
temp.removeAt(2);
print(temp);
}
这个函数打印出['a', 'b', 'd'],这是你想要得到的正确结果?
但是如果你也可以用这个来获得移除的值。
void main() {
List<String> temp = ['a', 'b', 'c', 'd'];
var removedValue = temp.removeAt(2);
print(removedValue);
}
如果您想要获得原始列表的克隆但没有元素,您可以像这样创建一个新列表。
void main() {
List<String> temp = ['a', 'b', 'c', 'd'];
int indexToRemove = 2;
List newList = temp.where((x) => temp.indexOf(x) != indexToRemove).toList();
print(newList);
}
【讨论】:
如果您想删除有逻辑的项目,您还可以查看下面的代码,这将帮助您删除有条件的项目。
List<String> temp = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun'];
for (var i = 0; i < temp.length; i++){
if(temp[i] == "Mon") {
int index = i;
}
}
temp.removeAt(index);
【讨论】: