sex123 发表于 2015-3-13 21:14:13

询问一个两个数组比较的问题,最终得到比较后删除后余下的数组

本帖最后由 sex123 于 2015-3-13 21:19 编辑

假设有两个数组
$cnLinkoutAll 和 $black
分别存有不同的内容文字,例如
$cnLinkoutAll 存有以下文字
EBSCO
Bentham Science Publishers Ltd.
Molecular Vision
Example B
而$black数组存有以下文字
Gale Databases
EBSCO
ProQuest
Bentham Science Publishers Ltd.
Ingenta plc
也就是说$black是黑名单数组。$cnLinkoutAll 是待筛选数组。

问题来了》请问,怎么把$cnLinkoutAll 中存有的黑名单删除,即删除$cnLinkoutAll 当中的
EBSCO
Bentham Science Publishers Ltd.
而最后保留黑名单数组中没有的文字,即保留Molecular Vision和Example B。

sex123 发表于 2015-3-15 12:25:49

这个我用倒序删除的方法搞定了,因为第一个数组里面是一对一对出现的,第一位是链接,第二位是文字,第三位是链接,第四位是对应的文字,挺麻烦的,最后只能倒着删除,还用step 2了,不过最后搞定了,谢谢楼上的几位了。

netegg 发表于 2015-3-14 03:24:37

本帖最后由 netegg 于 2015-3-14 03:35 编辑

#include<array.au3>
Dim $cnLinkoutAll =
Dim $black=
$num = UBound($black)
_ArrayConcatenate($black, $cnLinkoutAll)
$black = _arrayunique($black)
_ArrayDelete($black, 0)
_ArrayReverse($black)
ReDim $black
_ArrayReverse($black)
_arraydisplay($black)

tryhi 发表于 2015-3-13 21:36:11

#Include <Array.au3>
Dim $cnLinkoutAll =
Dim $black=
Dim $n = 0
_ArrayDisplay($cnLinkoutAll,'删除之前')
For $i = 0 To 9
        For $j = 0 To 3
                If $cnLinkoutAll[$i-$n] = $black[$j] Then
                        _ArrayDelete($cnLinkoutAll,$i-$n)
                        $n += 1
                        ExitLoop
                EndIf
        Next
Next
_ArrayDisplay($cnLinkoutAll,'删除之后')

netegg 发表于 2015-3-14 00:42:38

#include<array.au3>
Dim $cnLinkoutAll =

Dim $black=
$num = UBound($black)
_ArrayConcatenate($black, $cnLinkoutAll)
$black = _arrayunique($black)
For $i = $num To 0 Step -1
        _arraydelete($black, $i)
Next
_arraydisplay($black)

zxhou1 发表于 2015-3-14 22:04:51

{:face (197):}
页: [1]
查看完整版本: 询问一个两个数组比较的问题,最终得到比较后删除后余下的数组