Subscribe Bookmark RSS Feed

How to filter a list based on another list

KinKame

Community Trekker

Joined:

Nov 30, 2015

Hello 

it should be easy but I cannot figure out by myself.

I have 2 lists and I would like to filter the first 1 based on the second 

  1. ColList --> contain my table column names 
  2. CompList --> contain extractant

For example 

ColList = ("aa_Lio", "aa_Leo", "ab_Lio", "ab_Leo", "ac_Lio", "ac_Leo", "ad_Lio", "ad_Leo" )

CompList = ("Lio")

Goal

create a list which I call extractCol whichwould be in my example extractCol = ("aa_Lio", "ab_Lio", "ac_Lio", "ad_Lio")

 

here is my script. If i dont use the For loop it works ...

For( k = 1, k <= 1, k++,
  For( i = 1, i <= 3, i++,
    If( Contains( ColList[i], CompList[k]) >=1 ,
       Insert Into( extractCol, ColList[i] )
    )
  );
);

 

Best regards

Lionel

1 ACCEPTED SOLUTION

Accepted Solutions
ian_jmp

Staff

Joined:

Jun 23, 2011

Solution
NamesDefaultToHere(1);

ColList = {"aa_Lio", "aa_Leo", "ab_Lio", "ab_Leo", "ac_Lio", "ac_Leo", "ad_Lio", "ad_Leo" };
CompList = {"Lio"};

extractCol = {};
for(k=1, k<=NItems(CompList), k++,
	for(i=1, i<=NItems(ColList), i++,
		if(EndsWith(ColList[i], CompList[k]), InsertInto(extractCol, colList[i]));
	);
);
extractCol;
2 REPLIES
ian_jmp

Staff

Joined:

Jun 23, 2011

Solution
NamesDefaultToHere(1);

ColList = {"aa_Lio", "aa_Leo", "ab_Lio", "ab_Leo", "ac_Lio", "ac_Leo", "ad_Lio", "ad_Leo" };
CompList = {"Lio"};

extractCol = {};
for(k=1, k<=NItems(CompList), k++,
	for(i=1, i<=NItems(ColList), i++,
		if(EndsWith(ColList[i], CompList[k]), InsertInto(extractCol, colList[i]));
	);
);
extractCol;
KinKame

Community Trekker

Joined:

Nov 30, 2015

Ian
thank you,
the EndsWith function works perfectly ...
best regards
Lionel