如果我有一个像 -
这样的数组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
答案 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中执行此操作。