array_shift

此函数从给定数组中删除第一个元素并返回它。

因此,所有其他元素都左移了一位,即索引 0 处的值被移除,索引 1 处的值移至索引 0,索引 2 处的值移至索引 1,依此类推。元素的数量减少 1,因为没有值可用来替换最后一个元素。

该函数的工作原理与 array_pop 相同,但会删除并返回第一个元素,而不是最后一个元素。

注意 使用 array_first 以获得第一个元素而不将其从数组中移除。

 

语法:

array_shift(array);

参数类型描述
arrayArray转到的数组移位,即返回并从中移除第一个元素

 

返回:

Any (the type of the removed first array element)

 

示例1:基本使用

var _array = ["A", "B", "C"];
repeat(2)
{
    array_shift(_array);
}
show_debug_message(_array);

上面的代码在数组 _array 上两次调用 array_shift 。之后,一条调试消息显示数组的内容。由于对该函数的第一次调用删除了值 "A",第二次移位删除了值 "B",此时数组将只包含 "C"

 

示例2:使用 array_shift 和 array_push 的队列

var _queue = [];
var _incoming = ["S", "O", "M", "E", " ", "L", "E", "T", "T", "E", "R", "S"];
MAX_QUEUE_LENGTH = 4;
var _len = array_length(_incoming), i = 0;
repeat(_len)
{
    array_push(_queue, _incoming[i]);
    if (array_length(_queue) > MAX_QUEUE_LENGTH)
    {
        array_shift(_queue);
    }
    i++;
}

上面的代码创建了一个临时数组_queue,它的作用类似于使用 array_shiftarray_push 的队列。第二个数组 _incoming 中的字符使用 repeat 循环逐个添加到队列数组中。每当队列长度大于4(存储在常量 MAX_QUEUE_LENGTH 中)时,使用 array_shift 删除第一个元素。

 

示例3:旋转数组

var _array = ["F", "O", "R", "E", "V", "E", "R"];
repeat(10)
{
    array_push(_array, array_shift(_array));
    show_debug_message(_array);
}

在上面的例子中,数组 _array 被"旋转"了 10 次。"旋转"数组意味着元素的一端被移除,另一端被重新添加。数组的长度保持不变。每一次迭代,字母向左移动数组向左旋转。每次迭代后都会显示一条调试消息,以显示该点的数组内容。

使用函数 array_pop 和 array_insert 数组可以改为向旋转。