检查数组是否包含另一个数组及其在 DART/Flutter 中的位置
check if array contains another array and its position in DART/Flutter
在dart语言中,我想检查这个数组元素=[1,1]是否存在于这个数组中
list=[[0, 3], [0, 4], [1, 0], [1, 1], [1, 2], [1, 3]]
如果确实如此,请告诉我确切的位置(在本例中为 3)。
我尝试了 indexOf 但它不起作用,总是 returns -1
你可以使用这个功能:
int isInList(List<List<dynamic>> list, List<dynamic> element) {
for (int i = 0; i < list.length; i++) {
var e = list[i];
if (e.length == element.length) {
bool rejected = false;
for (int j = 0; j < e.length; j++) {
if (e[j] != element[j]) {
rejected = true;
}
}
if (!rejected) {
return i;
}
}
}
return -1;
}
问题是您有一个列表列表,而 indexOf 不会比较内部列表的元素。
您可以使用indexWhere()
来获取项目的位置。并且您应该考虑到您正在尝试在列表中查找列表。您预期的列表包含两个项目。所以你可以像这样在给定的列表中搜索它:
var list = [
[0, 3],
[0, 4],
[1, 0],
[1, 1],
[1, 2],
[1, 3]
];
var element = [1, 1];
var index = list.indexWhere(
(el) => el.first == element.first && el.last == element.last);
print(index); // output will 3
感谢@pskink,您还可以使用 listEquals
方法导入包。
import 'package:flutter/foundation.dart';
///...
var s = list.indexWhere((el) => listEquals(el, element));
print(s);
在dart语言中,我想检查这个数组元素=[1,1]是否存在于这个数组中
list=[[0, 3], [0, 4], [1, 0], [1, 1], [1, 2], [1, 3]]
如果确实如此,请告诉我确切的位置(在本例中为 3)。
我尝试了 indexOf 但它不起作用,总是 returns -1
你可以使用这个功能:
int isInList(List<List<dynamic>> list, List<dynamic> element) {
for (int i = 0; i < list.length; i++) {
var e = list[i];
if (e.length == element.length) {
bool rejected = false;
for (int j = 0; j < e.length; j++) {
if (e[j] != element[j]) {
rejected = true;
}
}
if (!rejected) {
return i;
}
}
}
return -1;
}
问题是您有一个列表列表,而 indexOf 不会比较内部列表的元素。
您可以使用indexWhere()
来获取项目的位置。并且您应该考虑到您正在尝试在列表中查找列表。您预期的列表包含两个项目。所以你可以像这样在给定的列表中搜索它:
var list = [
[0, 3],
[0, 4],
[1, 0],
[1, 1],
[1, 2],
[1, 3]
];
var element = [1, 1];
var index = list.indexWhere(
(el) => el.first == element.first && el.last == element.last);
print(index); // output will 3
感谢@pskink,您还可以使用 listEquals
方法导入包。
import 'package:flutter/foundation.dart';
///...
var s = list.indexWhere((el) => listEquals(el, element));
print(s);