Lua数组比较

Lua数组比较教程

Lua 中,我们要比较两个 数组 是否相等,我们不可以直接使用等于进行比较,且没有系统方法可以进行直接比较。

要比较两个 Lua 的数组是否相等,我们只有使用 for 循环 或者 while 循环 去遍历数组,然后进行挨个比较。

案例

比较两个数组是否相等

通过循环遍历数组来比较数组

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") arr = {1, 3, 5, 7, 9} arr1 = {1, 3, 5, 7} if #arr ~= #arr1 then print("not equal!") return end for i in pairs(arr) do if arr[i] ~= arr1[i] then print("not equal!") return end end print("equal!")

程序运行后,控制台输出如下:

18_Lua数组比较.png

这题的思路就是首先比较连个数组的长度,如果长度都不相等,那么数组肯定不相等,如果数组长度相等,那么再次比较数组的所有元素,如果所有元素都相等,那么就相等,只要有一个元素不相等,那么我们就是要 return 结束程序。

我们一开始定义的两个数组长度不相等,因此,程序直接返回了不相等,现在,我们修改程序如下:

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") arr = {1, 3, 5, 7, 9} arr1 = {1, 3, 5, 7, 8} if #arr ~= #arr1 then print("not equal!") return end for i in pairs(arr) do if arr[i] ~= arr1[i] then print("not equal!") return end end print("equal!")

程序运行后,控制台输出如下:

19_Lua数组比较.png

此时,数组的长度相等,但是数组的元素不同,因此还是返回了不相等,再次修改程序如下:

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") arr = {1, 3, 5, 7, 9} arr1 = {1, 3, 5, 7, 9} if #arr ~= #arr1 then print("not equal!") return end for i in pairs(arr) do if arr[i] ~= arr1[i] then print("not equal!") return end end print("equal!")

程序运行后,控制台输出如下:

20_Lua数组比较.png

这次,两个数组完全一样,因此返回了相等。但这个程序有个问题,如果我们修改数组如下:

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") arr = {1, 3, 5, 7, 9} arr1 = {[0]=1, 1, 3, 5, 7, 9} if #arr ~= #arr1 then print("not equal!") return end for i in pairs(arr) do if arr[i] ~= arr1[i] then print("not equal!") return end end print("equal!")

此时程序运行后,结果如下:

21_Lua数组比较.png

麦位看到,这两个数组明显不相等,但程序还是返回了相等,这种情况,我们可以修改程序如下:

#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") arr = {1, 3, 5, 7, 9} arr1 = {[0]=1, 1, 3, 5, 7, 9} if #arr ~= #arr1 then print("not equal!") return end for i in pairs(arr) do if arr[i] ~= arr1[i] then print("not equal!") return end end for i in pairs(arr1) do if arr[i] ~= arr1[i] then print("not equal!") return end end print("equal!")

此时程序运行后,结果如下:

22_Lua数组比较.png

此时,程序正确了。

Lua数组比较总结

在 Lua 中,我们要比较两个数组是否相等,我们不可以直接使用等于进行比较,且没有系统方法可以进行直接比较。

要比较两个 Lua 的数组是否相等,我们只有使用 for 循环或者 while 循环去遍历数组,然后进行挨个比较。