Arrays 如何从Elm中的数组/列表中删除给定索引处的项?
在给定的Arrays 如何从Elm中的数组/列表中删除给定索引处的项?,arrays,list,elm,Arrays,List,Elm,在给定的数组中删除索引i中的项的最优雅的方法是什么?在给定的列表中?我能想到的最好的: removeFromList i xs = (List.take i xs) ++ (List.drop (i+1) xs) removeFromArray i = Array.toList >> removeFromList i >> Array.fromList 最近我需要一个indexedFilter函数。这可以为您提供一个基于折叠的替代方案 indexedFil
数组中删除索引i
中的项的最优雅的方法是什么?在给定的列表中
?我能想到的最好的:
removeFromList i xs =
(List.take i xs) ++ (List.drop (i+1) xs)
removeFromArray i =
Array.toList >> removeFromList i >> Array.fromList
最近我需要一个indexedFilter
函数。这可以为您提供一个基于折叠的替代方案
indexedFilter : (Int -> a -> Bool) -> List a -> List a
indexedFilter p xs =
let
tup = List.map2 (,) [ 0 .. List.length xs - 1 ] xs
in List.foldr (\(i,x) acc -> if p i x then x :: acc else acc) [] tup
这是一种基于J的不同解决方案
用法:
[-1,2,0] `from` ["fran","world","san","hello"]
返回:[只是“你好”,只是“桑”,只是“弗兰”]
定义,在导入列表公开(..)
之后:
这应该相当有效:
remove : Int -> Array a -> Array a
remove i a =
let
a1 = Array.slice 0 i a
a2 = Array.slice (i+1) (Array.length a) a
in
Array.append a1 a2
使用List.Extra.removeAt
from.现在,“elm社区/阵列额外”软件包提供以下功能:
被1分钟击败!也可以删除参数。列表的排序状态是无关的,因为问题与列表中的位置(索引)相关,而不是列表中元素的特征相关。它也可以是不可排序项目的列表。
remove : Int -> Array a -> Array a
remove i a =
let
a1 = Array.slice 0 i a
a2 = Array.slice (i+1) (Array.length a) a
in
Array.append a1 a2