从数组经典asp中删除double值

时间:2011-07-06 04:45:29

标签: arrays vbscript asp-classic comparison

如果我有一个像 -

这样的数组
array(0) = 85
array(1) = 85
array(2) = 53
array(3) = 203
array(4) = 85

如何创建没有double值的新数组?所以数组将是

array(0) = 85
array(1) = 53
array(2) = 203

4 个答案:

答案 0 :(得分:2)

我知道这是一个老问题,但最近我遇到了同样的情况,我需要从数组中删除多余的entires。我搜索了SO,但没有找到任何简单的方法来做同样的事情。搜索后我在Hey, Scripting Guy! Blog上得到了简单的方法。

来自this链接

Set objDictionary = CreateObject("Scripting.Dictionary")

arrItems = Array("a","b","b","c","c","c","d","e","e","e")

For Each strItem in arrItems
  If Not objDictionary.Exists(strItem) Then
      objDictionary.Add strItem, strItem   
  End If
Next

intItems = objDictionary.Count - 1

ReDim arrItems(intItems)

i = 0

 For Each strKey in objDictionary.Keys
   arrItems(i) = strKey
   i = i + 1
 Next

For Each strItem in arrItems
   Wscript.Echo strItem
 Next

希望这会对某人有所帮助

答案 1 :(得分:1)

使用my answer to your previous question中的函数和

之类的测试代码
  Dim aA   : aA   = Split( "85 459 459 90 85 85 85" )
  Dim aRes : aRes = diffArray( aA, Array() )
  WScript.Echo "A  :", Join( aA )
  WScript.Echo "UNI:", Join( aRes( 0 ) ), "settifieds"

给你:

A  : 85 459 459 90 85 85 85
UNI: 85 459 90 settifieds

答案 2 :(得分:0)

我不知道vbs中是否有一个函数可以从数组中删除重复的元素。如果它不存在,你可以使用以下内容。可能是语法问题,但你可以使用策略

length=5
    newLength=1
    for i=0 to length-1

      for j=0 to newLength-1
      if(array(i)=array(j)) then
    exit For
    end if
      next
      if(j=newLength) then
    array(newLenth++)=array(i);
    end if

    next

答案 3 :(得分:0)

如果对数组进行排序,也可以在n log n中执行此操作。