Lua 找到最接近的值

Lua 找到最接近的值,lua,lua-table,Lua,Lua Table,我正在寻找一种方法,找出表中哪个值最接近x,并返回该值 让我们假设,对于第二个,X是X=15,我们有一个4个值{12,190,1,18}的表,在这种情况下,如何使它如此,第一个键和值被返回?我会这样做: initialdiff = 1000000000000 selectedkey = -1 values = {12, 190, 1, 18} x = 15 for key, val in pairs (values) do currentdiff = math.fabs(v

我正在寻找一种方法,找出表中哪个值最接近x,并返回该值


让我们假设,对于第二个,X是X=15,我们有一个4个值{12,190,1,18}的表,在这种情况下,如何使它如此,第一个键和值被返回?

我会这样做:

 initialdiff = 1000000000000
 selectedkey = -1
 values = {12, 190, 1, 18}
 x = 15

 for key, val in pairs (values) do
     currentdiff = math.fabs(val - x)
     if (currentdiff < initialdiff) do
         initialdiff = currentdiff
         selectedkey = key
     end
 end

 -- selectedkey now holds key for closest match
 -- values[selectedkey] gives you the (first) closest value

也许应该是返回表[smallestIndex]来获取实际值,而不是它的索引。我对它进行了编辑,只返回两个值。
x = 15
table = {190, 1, 12, 18}

function NearestValue(table, number)
    local smallestSoFar, smallestIndex
    for i, y in ipairs(table) do
        if not smallestSoFar or (math.abs(number-y) < smallestSoFar) then
            smallestSoFar = math.abs(number-y)
            smallestIndex = i
        end
    end
    return smallestIndex, table[smallestIndex]
end

index, value = NearestValue(table,x)

print(index)
print(value)