检查数组是不是包含另一个数组及其在 DART/Flutter 中的位置
Posted
技术标签:
【中文标题】检查数组是不是包含另一个数组及其在 DART/Flutter 中的位置【英文标题】:check if array contains another array and its position in DART/Flutter检查数组是否包含另一个数组及其在 DART/Flutter 中的位置 【发布时间】:2021-11-29 11:29:24 【问题描述】:在dart语言中,我想检查这个数组元素=[1,1]是否存在于这个数组中
list=[[0, 3], [0, 4], [1, 0], [1, 1], [1, 2], [1, 3]]
如果确实如此,请给我确切的位置(在这种情况下为 3)。
我试过 indexOf 但它不起作用,总是返回 -1
【问题讨论】:
final b = [1, 1]; final index = list.indexWhere((a) => listEquals(a, b)); print(index);
当然,欢迎您
如果 b = [1,1] 和 list = [0,1,2,3,4,5,6,7,1,1] 会怎样?我应该用什么?
【参考方案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 不会比较内部列表的元素。
【讨论】:
【参考方案2】:您可以使用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/Flutter 中的位置的主要内容,如果未能解决你的问题,请参考以下文章