找回密码
 加入
搜索
查看: 1785|回复: 6

[AU3基础] 关于比对删除数组元素(已解决)

[复制链接]
发表于 2012-4-20 23:47:29 | 显示全部楼层 |阅读模式
本帖最后由 凌九霄 于 2012-4-21 03:37 编辑

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

Local $b[9] = [1,2,3,4,5,6,7,8,9]

Local $a[3] = [5,3,1]

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

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

评分

参与人数 1金钱 +15 收起 理由
afan + 15 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2012-4-21 00:40:40 | 显示全部楼层
.......没看懂
发表于 2012-4-21 00:41:12 | 显示全部楼层

#include <array.au3>
Local $b[9] = [1,2,3,4,5,6,7,8,9]
Local $a[3] = [5,3,1]
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")

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2012-4-21 00:52:29 | 显示全部楼层
_ArrayDelete()   最高支持二维,对二维数组是 删除行
如果需要 删除多维数组 的某个元素 ,选要先 转为一维数组
发表于 2012-4-21 01:04:21 | 显示全部楼层
 楼主| 发表于 2012-4-21 01:54:36 | 显示全部楼层
veket_linux 发表于 2012-4-21 00:41



  非常感谢,受教了
 楼主| 发表于 2012-4-21 03:23:07 | 显示全部楼层
本帖最后由 凌九霄 于 2012-4-21 03:42 编辑

受一位叫木头(QQ:104952128)朋友的启发,自行写了一个方法。但是没有veket_linux的来得简洁。
#include <array.au3>
Local $b[9] = [1,2,3,4,5,6,7,8,9]
Local $a[5] = [5,3,1]
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 To  0 Step -1
        $value = $b[$j]
        If IsDeclared($value) = 0 Then
               _ArrayDelete($b,$j)
        EndIf
Next

_ArrayDisplay($b, "数组b")
再次感谢 veket_linux 和 木头 的帮助
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-30 13:25 , Processed in 0.078888 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表