如何删除表格的起始和结束元素

我需要一个聪明的解决方案来处理这种情况。我有一个值列表,如下所示: {'a','b','abc','d','e','abc'}

正如你看到的,字符串“abc”出现了两次。我需要删除第一个“abc”之前的所有元素和最后一个“abc”之后的所有元素。

local list={'a''b''abc''d''e''abc'}
local doubled_value=get_doubled_value(list)--返回“abc”
for i=1,#list do
如果不是(list[1]==doubled_value) then
   table.remove(list,1)
 else
   break
 end
end
点赞
用户12918181
用户12918181

table.remove非常慢,最简单的方法是为值创建一个索引并创建新列表:

<script src="https://github.com/fengari-lua/fengari-web/releases/download/v0.1.4/fengari-web.js"></script>
<script type="application/lua">

function doubled_list(list)
  local index = {}
  for i,n in ipairs(list) do
    if index[n] then
      local newlist = {}
      for j = index[n],i do
        newlist[#newlist + 1] = list[j]
      end
      return newlist
    end
    index[n] = i
  end
  return list
end

local list = doubled_list({'a', 'b', 'abc', 'd', 'e', 'abc', 'f', 'g'})

print(table.concat(list,','))

</script>
2020-02-26 20:37:48