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

我正在为学校的一个项目工作,截止时间很快,但在我的程序中排序一些表格时遇到了一个相当大的问题。

先来些背景: 主要部分的简单程序是工作以制作两个点之间的斜率,然后删除所有未指向“目标”的值。例如,我将我的第一个 x 和 y 坐标设置为(12,12),第二个坐标设置为(45,45):因此,我需要删除所有大于 45 的 x 值,因为它们离我“目标”更远,可以说是。

所以这就是我的代码,应该移除所有远离目标的 x 值:

 如果 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! 我只是一个高中生,所以我肯定犯了一些愚蠢的错误,但这是迄今为止我遇到的最奇怪的事情。请帮忙!

我想出的斜率函数:(此部分完全正常工作)

function slope(x1,x2,y1,y2) - 斜率公式
   y_slp =(y2-y1)
   x_slp =(x2-x1)
   slp =(y_slp / x_slp)
   b = psbl_y -(slp *(psbl_x)) - 在给定的 x 和 y 坐标下求解 y 截距
   print(slp)
   run_x = {} 
   run_x_index = 0 
   y_list = {} 
   for i = _grid_x,grid_x do -_grid_x = -500 和 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
点赞