F# 一步完成F | Array.map和Array.filter(单功能)

F# 一步完成F | Array.map和Array.filter(单功能),f#,F#,举个例子: 打开FSharp.Data 让jsonstirn=@[ {红色:100,绿色:100,蓝色:100,阿尔法:1.0}, {红色:100,绿色:100,蓝色:100,阿尔法:0.5}, ] 让GetSolidColor jsonString= 让getColor项目= 如果项:JsonValue.[alpha].AsDecimalArray.map getColor |>Array.filter fun x->x.IsSome |>Array.map fun x->x.Value 是否

举个例子:

打开FSharp.Data 让jsonstirn=@[ {红色:100,绿色:100,蓝色:100,阿尔法:1.0}, {红色:100,绿色:100,蓝色:100,阿尔法:0.5}, ] 让GetSolidColor jsonString= 让getColor项目= 如果项:JsonValue.[alpha].AsDecimal<1m 然后一些{R=item.[red].AsInteger;G=item.[green].AsInteger;B=item.[blue].AsInteger} 没有别的 JsonValue.ParsejsonString.AsArray |>Array.map getColor |>Array.filter fun x->x.IsSome |>Array.map fun x->x.Value 是否可以使用单个函数在单个调用中实现映射和筛选功能? 有点像Array.mapfilter它不是reduce,因为我没有累加器,或者它是解决方案

或者,除了for循环之外,还有一种替代实现,以避免使用中间选项和3个数组函数调用?

当然,您可以执行以下操作:

JsonValue.Parse(jsonString).AsArray() 
|> Array.choose getColor 
当然,您可以:

JsonValue.Parse(jsonString).AsArray() 
|> Array.choose getColor