Task[edit]
Find the index of a string (needle) in an indexable, ordered collection of strings (haystack).

Raise an exception if the needle is missing.

If there is more than one occurrence then return the smallest index to the needle.

Extra credit
Return the largest index to a needle that has multiple occurrences in the haystack.

See also
 Search a list of records

 
put ("apple", "banana", "cranberry" ,"durian", "eggplant", "grape", "banana", "appl", "blackberry") into fruitList
 
put findInList(fruitList,"banana")  // 2
put findInList(fruitList,"banana", true)  // 7
put findInList(fruitList,"tomato")  // throws an exception
 
function findInList paramList, paramItem, findLast
	set temp to every offset of paramItem within paramList
	if (number of items in temp = 0)
		Throw InvalidSearch, "Item not found in list"
	end if
	if findLast
		return last item of temp
	else
		return first item of temp
	end if
end findInList
 