如何清除数组里面的重复记录
有一个数组a=1
a=1
a=4
a=4
如何清除重复的数据,得到以下的数组
a=1
a=4
[ 本帖最后由 xhei 于 2009-3-8 00:43 编辑 ] 有没这样的函数可使用 没有找到相关的数组函数, 来个取巧的,用sql。。。 - -||||||
#include <Array.au3>
#include <SQLite.au3>
Dim $test =
_ArrayDisplay($test, "Original data")
_SQLite_Startup()
_SQLite_Open()
_SQLite_Exec(-1, "Create Temp Table tempTable (Temp);")
For $o = 0 to Ubound($test) - 1
_SQLite_Exec(-1, "Insert into tempTable(Temp) values('" & $test[$o] & "');")
Next
Local $row, $col
_SQLite_GetTable2D(-1, "Select distinct Temp From tempTable;", $test, $row, $col)
_SQLite_Exec(-1, "Drop Table tempTable;")
_SQLite_Close()
_SQLite_Shutdown()
_ArrayDelete($test, 0)
_ArrayDisplay($test, "Result") 似乎用双重循环可以解决 原帖由 pusofalse 于 2009-3-7 00:41 发表 http://www.autoitx.com/images/common/back.gif
没有找到相关的数组函数, 来个取巧的,用sql。。。 - -||||||
#include
#include
Dim $test =
_ArrayDisplay($test, "Original data")
_SQLite_Startup()
_SQLite_Open()
...
我汗.....都用到<array.au3>了...
_ArrayUnique
--------------------------------------------------------------------------------
Returns the Unique Elements of a 1-dimensional array.
#Include <Array.au3>
_ArrayUnique($aArray[, $iDimension = 1[, $iBase = 0[, $iCase = 0[, $vDelim = "|"]]]])
这个就是啊!!!!!............不过效率很低...下面是我的办法 但是没有完善 有点问题的 效率比_ArrayUnique高很多- -
;清理重复项
Func ArrayUnique($array)
For $i = 1 To UBound($array) - 1
If $array[$i] == $array[$i - 1] Then
$array[$i - 1] = ""
EndIf
Next
$Temp = _ArrayToString($array)
For $i = 0 To 10
$Temp = StringReplace($Temp, "||", "|")
Next
$Temp = StringRegExpReplace($Temp, "^[\|]*", "")
$Temp = StringRegExpReplace($Temp, "[\|]*$", "")
Return StringSplit($Temp, "|", 2)
EndFunc ;==>ArrayUnique
[ 本帖最后由 rolaka 于 2009-3-7 10:32 编辑 ]
回复 5# rolaka 的帖子
_ArrayUnique? 现在自己在用的版本中没有发现这个函数~ 另外测试兄的代码出错。 原因只是只会检测相邻的两元素是否相同。test= 实际只能去除重复项1。 原帖由 pusofalse 于 2009-3-7 17:02 发表 http://www.autoitx.com/images/common/back.gif_ArrayUnique? 现在自己在用的版本中没有发现这个函数~ 另外测试兄的代码出错。 原因只是只会检测相邻的两元素是否相同。test= 实际只能去除重复项1。
忘记说了....需要先排序.... 这里没有加排序算法
顺便 _ArrayUnique函数不可能没有的- - 这个东西很早就出现在array.au3里了好像
[ 本帖最后由 rolaka 于 2009-3-7 17:54 编辑 ]
回复 7# rolaka 的帖子
不好意思,是我看漏了。只在帮助文档中找了下,发现没有。也没有到include目录去找~ - -治学问题.... - -||| rolaka兄代码解决了我的问题,感谢~~
结贴了 学习 了 :face (2): 为什么三楼的结果还是有重复呢?
如何解决啊? #include <Array.au3>
Local $aArray =
_ArrayDisplay($aArray, "包含重复" )
$aArray = _ArrayUnique($aArray)
_ArrayDisplay($aArray, "去除重复" )
;$aArray=不重复数组元素总数
;经测试一维数组里用_ArrayUnique前未使用_ArraySort排序也可以正常去除数组的重复值啊 thank!!!!!
页:
[1]