如何从Lua中的表中删除特定项?

时间:2017-04-27 22:43:44

标签: lua lua-table

我正在研究一个即将到期的学校项目,并且在我的程序中对我的一些表进行排序时遇到了一个非常大的问题。

首先是一些背景: 这个简单程序的主要部分是在两点之间产生一条直线的斜率,然后删除所有不是“目标”的值。例如,我的第一个x和y坐标为(12,12),第二个为(45,45):所以我需要删除大于45的所有x值,因为它们远离我的“目标”可以这么说。

所以这是我的代码假设从目标中移除所有x值:

if greater_positive_bool == true then
    for xer in pairs(x_list) do 
        if bull_coords_x < xer then 
            table.remove(x_list, xer)
        end
    end
end 

if语句顶部的布尔变量只是为了帮助确定应删除哪些值。 还有一件事,该列表总共有1001个值(-500到500)。因此,当试图删除大于45的所有值时,就会发生这种情况:

  table.getn(x_list)
   => 523

我知道事情已经发生了,但它变得更加陌生;重新遍历列表返回的值范围从-500到500,就像没有被删除一样,即使列表长度只有523! 我只是在高中,所以我肯定犯了一些愚蠢的错误,但这是迄今为止我遇到的最奇怪的事情。请帮忙!

我提出的斜率函数:(这部分工作得很好BTW)

function slope(x1, x2, y1, y2) --Slope formula 
  y_slp = (y2 - y1)
  x_slp = (x2 - x1)
  slp = (y_slp / x_slp) 
  b = psbl_y - (slp * (psbl_x)) --Solving for the y-intercept given x and y coords 
  print(slp)
  run_x = {} 
  run_x_index = 0 
  y_list = {}
  for i=_grid_x, grid_x do -- _grid_x = -500 and grid_x = 500 
    table.insert(run_x, i)
  end
  for x_value in pairs(run_x) do 
    run_x_index = run_x_index + 1 
    y_value = (slp * run_x[run_x_index]) + b
    table.insert(y_list, y_value)
  end
  x_list = run_x
end 

0 个答案:

没有答案