凌九霄 发表于 2012-4-20 23:47:29

关于比对删除数组元素(已解决)

本帖最后由 凌九霄 于 2012-4-21 03:37 编辑

一个一维数组a,一个一维数组b,要求是删除b中不包含在a中的元素。要如何做?别告诉我b=a,我这个是简化了的,其实b是二维数组

Local $b =

Local $a =

我要的结果是:b数组元素跟a数组保持一致

个人想直接在循环比对中删除,不另外建立临时数组

netegg 发表于 2012-4-21 00:40:40

.......没看懂

veket_linux 发表于 2012-4-21 00:41:12


#include <array.au3>
Local $b =
Local $a =
Local $i
Local $j
For $i = UBound($b)-1 To 0 Step -1
        For $j = 0 To UBound($a)-1
                If $b[$i] = $a[$j] Then ExitLoop;;;
        Next
        If $j > UBound($a)-1 Then _ArrayDelete($b, $i);;;
Next
_ArrayDisplay($b, "数组b")

veket_linux 发表于 2012-4-21 00:52:29

_ArrayDelete()   最高支持二维,对二维数组是 删除行
如果需要 删除多维数组 的某个元素 ,选要先 转为一维数组

netegg 发表于 2012-4-21 01:04:21

http://www.autoitx.com/thread-28506-1-1.html

凌九霄 发表于 2012-4-21 01:54:36


veket_linux 发表于 2012-4-21 00:41 http://www.autoitx.com/images/common/back.gif


非常感谢,受教了

凌九霄 发表于 2012-4-21 03:23:07

本帖最后由 凌九霄 于 2012-4-21 03:42 编辑

受一位叫木头(QQ:104952128)朋友的启发,自行写了一个方法。但是没有veket_linux的来得简洁。#include <array.au3>
Local $b =
Local $a =
Local $i
Local $j
Local $value

For $i = 0 To UBound($a) - 1
        $value = $a[$i]
        If IsDeclared($value) = 0 Then
                Assign($value,1)
        EndIf
Next

For $j = UBound($b) - 1 To0 Step -1
        $value = $b[$j]
        If IsDeclared($value) = 0 Then
             _ArrayDelete($b,$j)
        EndIf
Next

_ArrayDisplay($b, "数组b")再次感谢 veket_linux 和 木头 的帮助
页: [1]
查看完整版本: 关于比对删除数组元素(已解决)