如何在 Dart/Flutter 中找到从一个列表匹配到另一个列表的所有元素的索引
How to find the indices of all elements matching from one list to another in Dart/Flutter
假设,我有一个列表:firstList = ["Travel", "Shopping", "Transport"];
另一个列表:secondList = ["Travel", "Shopping", "Shopping", "Travel", "Transport", "Transport", "Travel", "Travel"]
我需要从包含以下内容的 secondList 中找到所有元素的索引:"Travel"
secondList
"Travel"
出现在 索引 0、3、6 和 7
现在,我有一个包含元素索引的第三个列表,这里是 "Travel"
。
indexList = [0, 3, 6, 7]
// 因为索引 0、3、6 和 7 只包含元素 "Travel"
.
下面是我的程序:
for (int i = 0; i < firstList.length; i++) {
for (int j = 0; j < secondList.length; j++) {
indexList.add(secondList.indexOf(firstList[i]));
}
}
这不起作用,因为我得到这样的输出:
[0, 0, 0, 0, 0, 0, 0, 0, 0]
它似乎卡在了第一个索引上。
“旅行”,这里是一个例子,它应该是动态匹配的,比如 firstList[i] 或任何其他元素,而不仅仅是硬编码的“旅行”。比如如果我选择了 firstList[i] 然后在 secondList[].
中找到相同元素的索引
请帮我找出原因。
我是编程新手。
试试这个:
main() {
var firstList = ["Travel", "Shopping", "Transport"];
var secondList = [
"Travel",
"Shopping",
"Shopping",
"Travel",
"Transport",
"Transport",
"Travel",
"Travel"
];
var thirdList = [];
for (var i = 0; i < secondList.length; i++) {
if (secondList[i] == "Travel") {
thirdList.add(i);
}
}
print(thirdList);
}
编辑:它适用于 firstList
中的每个项目
试试这个:
main() {
var firstList = ["Travel", "Shopping", "Transport"];
var secondList = [
"Travel",
"Shopping",
"Shopping",
"Travel",
"Transport",
"Transport",
"Travel",
"Travel"
];
var thirdList = [];
for (var i = 0; i < firstList.length; i++) {
var sublist = [];
for (var j = 0; j < secondList.length; j++) {
if (secondList[j] == firstList[i]) {
sublist.add(j);
}
}
thirdList.add(sublist);
}
print(thirdList); // [[0, 3, 6, 7], [1, 2], [4, 5]]
}
我们可以用一个循环来实现。
试试这个
for (int j = 0; j < secondList.length; j++) {
if (secondList[j] == 'Travel') indexList.add(j);
}
List firstList = ["Travel", "Shopping", "Transport"];
List secondList = ["Travel", "Shopping", "Shopping", "Travel", "Transport", "Transport", "Travel", "Travel"];
List indexList = [];
getElement() {
for (int i = 0; i <= secondList.length; i++) {
if (secondList[i] == "Travel") {
indexList.add(i);
}
}
print(indexList);
}
void matchItem()
{
var firstList = ["Travel", "Shopping", "Transport"];
var secondList = ["Travel", "Shopping", "Shopping", "Travel", "Transport", "Transport", "Travel", "Travel"];
var foundItemPositions = [];
for(int i=0;i<firstList.length;i++)
{
if(secondList.contains(firstList[i]))
{
for(int j=0;j<secondList.length;j++)
{
if(firstList[i] == secondList[j])
{
foundItemPositions.add(j);
}
}
}
}
print(foundItemPositions);
}
假设,我有一个列表:firstList = ["Travel", "Shopping", "Transport"];
另一个列表:secondList = ["Travel", "Shopping", "Shopping", "Travel", "Transport", "Transport", "Travel", "Travel"]
我需要从包含以下内容的 secondList 中找到所有元素的索引:"Travel"
secondList
"Travel"
出现在 索引 0、3、6 和 7
现在,我有一个包含元素索引的第三个列表,这里是 "Travel"
。
indexList = [0, 3, 6, 7]
// 因为索引 0、3、6 和 7 只包含元素 "Travel"
.
下面是我的程序:
for (int i = 0; i < firstList.length; i++) {
for (int j = 0; j < secondList.length; j++) {
indexList.add(secondList.indexOf(firstList[i]));
}
}
这不起作用,因为我得到这样的输出:
[0, 0, 0, 0, 0, 0, 0, 0, 0]
它似乎卡在了第一个索引上。
“旅行”,这里是一个例子,它应该是动态匹配的,比如 firstList[i] 或任何其他元素,而不仅仅是硬编码的“旅行”。比如如果我选择了 firstList[i] 然后在 secondList[].
中找到相同元素的索引请帮我找出原因。 我是编程新手。
试试这个:
main() {
var firstList = ["Travel", "Shopping", "Transport"];
var secondList = [
"Travel",
"Shopping",
"Shopping",
"Travel",
"Transport",
"Transport",
"Travel",
"Travel"
];
var thirdList = [];
for (var i = 0; i < secondList.length; i++) {
if (secondList[i] == "Travel") {
thirdList.add(i);
}
}
print(thirdList);
}
编辑:它适用于 firstList
试试这个:
main() {
var firstList = ["Travel", "Shopping", "Transport"];
var secondList = [
"Travel",
"Shopping",
"Shopping",
"Travel",
"Transport",
"Transport",
"Travel",
"Travel"
];
var thirdList = [];
for (var i = 0; i < firstList.length; i++) {
var sublist = [];
for (var j = 0; j < secondList.length; j++) {
if (secondList[j] == firstList[i]) {
sublist.add(j);
}
}
thirdList.add(sublist);
}
print(thirdList); // [[0, 3, 6, 7], [1, 2], [4, 5]]
}
我们可以用一个循环来实现。
试试这个
for (int j = 0; j < secondList.length; j++) {
if (secondList[j] == 'Travel') indexList.add(j);
}
List firstList = ["Travel", "Shopping", "Transport"];
List secondList = ["Travel", "Shopping", "Shopping", "Travel", "Transport", "Transport", "Travel", "Travel"];
List indexList = [];
getElement() {
for (int i = 0; i <= secondList.length; i++) {
if (secondList[i] == "Travel") {
indexList.add(i);
}
}
print(indexList);
}
void matchItem()
{
var firstList = ["Travel", "Shopping", "Transport"];
var secondList = ["Travel", "Shopping", "Shopping", "Travel", "Transport", "Transport", "Travel", "Travel"];
var foundItemPositions = [];
for(int i=0;i<firstList.length;i++)
{
if(secondList.contains(firstList[i]))
{
for(int j=0;j<secondList.length;j++)
{
if(firstList[i] == secondList[j])
{
foundItemPositions.add(j);
}
}
}
}
print(foundItemPositions);
}