拜托...帮助我对此数组中的值进行分组
我有一个这样的数组
Arr(0) = 5
Arr(1) = ATC^1
Arr(2) = BTC^2
Arr(3) = ATC^3
Arr(4) = CTC^4
Arr(5) = BTC^5
我想要的最终结果是将 Arr(0) 更改为 3,这是组中唯一 TC 的数量。ATC,BTC和CTC。我希望 1、2 和 3 的每个项目都有数组中的分组值。
Arr(0) = 3
Arr(1) = ATC:1,3
Arr(2) = BTC:2,5
Arr(3) = CTC:4
我正在尝试在 MUMP 中执行此操作,所以我没有内置的排序/分组函数。
即使是伪代码也会有所帮助。
在 MUMPS 中,您不需要排序功能,因为数组下标会自动排序。
所以最简单的方法是创建另一个数组,其排序维度是第一条数据和值 - 第二条数据:
for i=1:1:Arr(0) set piece1=$piece(Arr(i),"^",1), piece2=$piece(Arr(i),"^",2), Temp(piece1)=$get(Temp(piece1))_piece2_","
运行该代码后,您将获得以下数组
Temp("ATC")="1,3,"
Temp("BTC")="2,5,"
Temp("CTC")="4,"
然后遍历该数组并构建一个您需要的数组:
set i="",Brr=0 for set i=$o(Temp(i)) quit:i="" set Brr=Brr+1,Brr(Brr)=i_":"_Temp(i)
你会得到一个你需要的数组:
Brr(1)="ATC:1,3,"
Brr(2)="BTC:2,5,"
Brr(3)="CTC:4,"
备选:
二维数组:
Temp("ATC",1)=""
Temp("ATC",3)=""
Temp("BTC",2)=""
Temp("BTC",5)=""
Temp("CTC",4)=""
$o
循环可以按排序顺序查看第一级中的项目,然后嵌套$o
以运行第二级。 或者,如果您只需要排序列表,则只是第一个。 如果您要有选择地从列表中删除元素并只允许您在数组中设置和终止注释,这将节省字符串逻辑。
排序逻辑在MUMPS
中并不常见,数据通常被加载/存储到数组中,使它们保持排序顺序。