在 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!")
程序运行后,控制台输出如下:
这题的思路就是首先比较连个数组的长度,如果长度都不相等,那么数组肯定不相等,如果数组长度相等,那么再次比较数组的所有元素,如果所有元素都相等,那么就相等,只要有一个元素不相等,那么我们就是要 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!")
程序运行后,控制台输出如下:
此时,数组的长度相等,但是数组的元素不同,因此还是返回了不相等,再次修改程序如下:
#!/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!")
程序运行后,控制台输出如下:
这次,两个数组完全一样,因此返回了相等。但这个程序有个问题,如果我们修改数组如下:
#!/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!")
此时程序运行后,结果如下:
麦位看到,这两个数组明显不相等,但程序还是返回了相等,这种情况,我们可以修改程序如下:
#!/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!")
此时程序运行后,结果如下:
此时,程序正确了。
在 Lua 中,我们要比较两个数组是否相等,我们不可以直接使用等于进行比较,且没有系统方法可以进行直接比较。
要比较两个 Lua 的数组是否相等,我们只有使用 for 循环或者 while 循环去遍历数组,然后进行挨个比较。