ASP 数组筛选排序

JzKx 2019-03-26 02:40:28
要求如下
将价数组数值从高到低依次排列,取出数值最高的前三项项号,如果数值最高的前三项中有“二”项,则将其去除,用得数值高的第四项项号替补,然后将取得的三项项号按数字由小到大的顺序进行组合

数组如下
1=>14, 2=>11, 3=>3, 4=>10, 5=>12, 6=>7, 7=>6, 8=>11


最大的数值的前三项值是 14 12 10 (由于11有两项是相同的所以取第四项4) 他们的项号是 1 5 4 然后项号从低到高排序 145 就是我要的结果 ASP不能加键所以 应该如何实现?
...全文
273 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
hookee 2019-03-27
  • 打赏
  • 举报
回复
<%
a = Array(14, 11, 3, 10, 12, 7, 6, 11)

Set d = CreateObject("Scripting.Dictionary")
For i = 0 To UBound(a)
    k = CStr(a(i))
    If d.Exists(k) Then
        d.Remove(k)
    Else
        d.Add k, (i+1)
    End If
Next

Set rs = CreateObject("ADODB.RecordSet")
rs.Fields.Append "idx", 3, 4
rs.Fields.Append "val", 3, 4
rs.CursorLocation = 3
rs.Open
items = d.Items
keys = d.Keys
For i = 0 To d.Count-1
    rs.AddNew
    rs(0).Value = CInt(items(i))
    rs(1).Value = CInt(keys(i))
Next
rs.Sort = "val DESC"
rs.MoveFirst
Dim t(2)
For i = 0 To 2
    If rs.EOF And rs.BOF Then Exit For
    t(i) = rs(0).Value
    rs.MoveNext
Next
rs.Close
Set rs = Nothing
Set rs = CreateObject("ADODB.RecordSet")
rs.Fields.Append "idx", 3, 4
rs.Open
For i = 0 To UBound(t)
    rs.AddNew
    rs(0).Value = t(i)
Next
rs.Sort = "idx ASC"
s = ""
Do While Not rs.EOF
    s = s & rs(0).Value & ","
    rs.MoveNext
Loop
rs.Close
Set rs = Nothing

Response.Write s

%>

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧