使用数组,删除值,然后恢复数组

时间:2018-01-26 16:31:58

标签: arrays autoit

我的代码循环;在每个循环中我需要使用一个数组,删除一些或所有值,然后将数组重置为其原始状态,然后继续下一个循环。例如:

$myArray[5] = [1, 2, 3, 4, 5]

_ArrayDelete($myArray, $i) ; Delete at the specified index

此周期运行后,我需要再次设置$myArray[5] = [1, 2, 3, 4, 5]。还有另一种方法(不使用_ArrayAdd())吗?

3 个答案:

答案 0 :(得分:1)

您可以使arrayDelete函数返回更改的数组副本,而不是修改原始数组本身。 一旦你这样做,你可以使用这样的东西:

$tempArray = arrayDelete($myArray, $i);
// do stuff with $tempArray
// $myArray is not changed

在您的情况下是否可行,或者如何在arrayDelete中实现此功能,如果没有更多信息,则无法说明。

答案 1 :(得分:1)

在函数中使用局部变量范围:

#include <array.au3>

Global $myArray[5] = [1, 2, 3, 4, 5]

For $i = 1 To 1000
    cycle($myArray)
Next

Func cycle($myArray) ; $myArray is a local copy inside the function
    _ArrayDisplay($myArray) ; to prove, it's the original
    _ArrayDelete($myArray,2) ; delete something
    _ArrayDisplay($myArray) ; to prove, it's altered
EndFunc   ;==>cycle

这就是我的建议:使用(本地)副本。

答案 2 :(得分:1)

避免redim惩罚,只提取你需要的东西

#include<array.au3>

local $myArray[5] = [1, 2, 3, 4, 5]

   for $i = 0 to 4

    _ArrayDisplay(_ArrayExtract($myArray , $i))
    If $i = 4 Then $i = -1

  next