将数组元素连接到新数组中

Concat array elements into new array

我有一个由 "/" 分隔的字符串,然后将其拆分为一个数组。例如

local string = 'Code/Github/Exercises'
local array = std.split(string, "/")

// ['Code', 'Github', 'Exercises']

然后如何转换 array 以便我可以获得输出:

// ['Code', 'Code/Github', 'Code/Github/Exercises']

下面的代码片段实现了它,使用 std.foldl() 作为“迭代器”来访问每个元素并构建返回的数组

local string = 'Code/Github/Exercises';
local array = std.split(string, '/');


// If `array` length > 0 then add `elem` to last `array` element (with `sep`),
// else return `elem`
local add_to_last(array, sep, elem) = (
  local len = std.length(array);
  if len > 0 then array[len - 1] + sep + elem else elem
);

// Accumulate array elements, using std.foldl() to visit each elem and build returned array
local concat(array) = (std.foldl(function(x, y) (x + [add_to_last(x, '/', y)]), array, []));

concat(array)