该函数创建了一个新的数组,并将输入数组的元素添加到其中,同时(或只要)判断函数返回true。
只要判断函数返回 false,该函数就停止执行。判断函数为其返回 false 的第一个元素以及其后的所有元素都不会添加到新数组中。
注意 此函数与 array_filter 相同,不同之处在于此函数在第一次判断函数返回 false 后停止执行。另一方面,array_filter 继续检查元素,即使在遇到判断函数返回 false 的元素之后也是如此。
array = ["1", "2", "3", "STOP", "4", "5", "6", "STOP", "7", "8", "9"];
array_up_to_stop = array_copy_while(array, function(element, index)
{
return (element != "STOP");
}, -1, -infinity);
上面的代码首先创建一个数组 array,该数组存储包含前 9 位数字的字符串,其间带有字符串 "STOP"。
然后,函数 array_copy_while 是调用该数组,如果 element 不等于字符串 "STOP",则使用判断函数返回 true。
偏移量参数设置为 -1,长度设置为 -infinity。这将从最后一个数组索引开始向后迭代这些值。
最后,结果存储在变量 array_up_to_stop 中,该变量应该只包含按该顺序排列的 "9"、"8" 和 "7",因为该数组是反向遍历的。