如何在Flutter中找到一个列表,其中任何一个元素都包含另一个列表?

3
var firstList= [1,2,3,4,5];
var secondList= [3,5];

// compare result : 3,5
// return true

var firstList= [1,2,3,4,5];
var secondList= [6,7,8];

// compare result : null
// return false

如何比较两个列表中的元素?如果两个列表中有匹配的数据,则返回true。如果没有匹配,则返回false。

6个回答

17

这应该能帮助你...

var firstList = [2, 2, 2, 3];
var secondList = [3, 3, 3];

var firstListSet = firstList.toSet();
var secondListSet = secondList.toSet();

print(firstListSet.intersection(secondListSet));

12

有很多方法可以做到这一点,你可以使用 every()contains() 方法来实现

以下是我会这样做:

  if (secondList.every((item) => firstList.contains(item))) {
    return true;
  } else {
    return false;
  }

3

还有一种快速检查真假的方法

var firstList = [2, 2, 2, 3];
var secondList = [3, 3, 3];
check(int value) => firstList.contains(value);
bool res = secondList.any(check); // returns true

0

测试一个列表是否包含另一个列表的元素的函数

跟进Josteve的答案 - 这个函数返回一个布尔值,符合问题要求,而不是像Josteve的代码片段那样返回一个字符串:

void main() {
  
var firstList= [1,2,3,4,5];
var secondList= [3,5];
var thirdList= [9,10];

  
 //There IS an intersection
  
print("Second List: ${isIntersect(secondList, firstList)}");

  //There is NO intersection
  
print("Third List: ${isIntersect(thirdList, firstList)}");
  
}


bool isIntersect(List listOne, List listTwo) {
  return listOne.toSet().intersection(listTwo.toSet()).isNotEmpty;
}

Demo 还在 Dart Pad 上


0

下一个解决方案并不完美,但可能对某些人有所帮助:

void main() {
  var list = ["aa", "bb", "cc"];
  for (var el in ['abc', 'aaa', 'bb', 'hmbb', 'afg', 'hhcc']) {
    bool isContains = list.any((e) => el.contains(e));
    if(isContains) {
      print(el);
    }
  }
}

输出:

aaa
bb
hmbb
hhcc

0
我发现这个可行
bool bTest2 = lstPlayerIDPieceLocationPointID
        .any((element) => lstFoundPoints.contains(element));
    print('bTest2 any..contains: $bTest2');

一直在查找一个列表中的任何项是否也在另一个列表中。我不关心它是什么,我只想知道是否有匹配项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接