2017-02-07 3 views
0

Какую функцию я могу использовать, чтобы найти ее индекс элемента в массиве? Например, я хочу, чтобы найти индекс 'x' в качестве Array (Data.Array)Поиск индекса элемента в массиве - Haskell

lowerCase = listArray ((0,0),(1,12)) ['a'..] 
+0

Что делать, если есть много 'x' в массиве? В основном массивы предназначены для доступа по индексу, и если вам нужно найти индекс элемента, то массив не является правильной структурой данных. – Ankur

+0

Спасибо Ankur. В моем случае я знаю, что в массиве нет повторяющихся данных ... Я хотел получить данные по кортежу, поэтому я использовал Array. В таком случае, какую структуру данных вы бы порекомендовали? – eii0000

ответ

0
fst <$> find ((== 'a') . snd) $ assocs lowerCase 
+0

Почему 'array' не имеет собственного' find' или в этом случае 'elemIndex' /' elemIndices'? – Michael

+0

@Michael Вы можете использовать 'find', потому что' Array' имеет экземпляр 'Foldable'. Я не знаю, почему нет 'elemIndex' для' Array'. – bwroga

+0

Спасибо! Просто небольшая вещь .. Я добавил fromJust fst $ fromJust $ find ((== 'a'). Snd) $ assocs lowerCase – eii0000