Closed4
リストから複数のインデックスを削除する
以下のコードのように、リストから複数のインデックスを削除しようとすると、Uncaught Error: RangeError: Value not in range: 4
というエラーが出た。
void main() {
List<String> alphabets = ['a', 'b', 'c', 'd', 'e'];
List<int> indexes = [1, 2, 4];
for (int index in indexes) {
alphabets.removeAt(index);
}
print(alphabets);
}
たしかに、indexを削除すると、リストが切り詰められるので、削除するindexがずれてしまう。
解決策
逆順に削除していけば、リストが切り詰められてもindexがずれない!
参考↓
ということで、削除するindexリストを降順にソートするコードを追加。
void main() {
List<String> alphabets = ['a', 'b', 'c', 'd', 'e'];
List<int> indexes = [1, 2, 4];
+ indexes.sort();
+ indexes = indexes.reversed.toList();
for (int index in indexes) {
alphabets.removeAt(index);
}
print(alphabets);
}
降順にソートする方法について参考にした記事↓
このスクラップは2023/05/27にクローズされました