我想使用以下格式创建表t
。
t[uniqueID] = order
uniqueID
将是唯一的,但order
每次都可以相同或不同。
然后我想按升序对表格进行排序,以便可以相应地打印uniqueID
。
我的代码:
t = {}
function compare(a, b)
return a[2] < b[2]
end
function printid()
for k, v in pairs(t) do
print(k)
end
end
function main()
t[5] = 47
t[6] = 45
t[7] = 49
table.sort(t, compare)
printid()
end
我得到的结果:
5
6
7
我期望的结果:
6
5
7
如何获得想要的结果?
答案 0 :(得分:4)
来自“在Lua中编程”一节19.3 “Sort”。
一个常见的错误是试图对表的索引进行排序。在一个表中,索引形成一个集合,并且没有任何顺序。
这意味着您必须将表<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<header>
<div class='wrapper'>
<img class='header-logo' src="assets/images/logo.jpg" alt="a logo">
<a class='btn btn-origin' href="#">Get in touch</a>
<div class='menu-icon'>
<div class='hamburger'></div>
</div>
<div class='menu-content'>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
<li><a href="#">Location</a></li>
</ul>
</div>
</div>
</header>
对放入另一个具有连续索引的表t
中。然后可以根据您定义的谓词对该表进行排序。此外,在迭代连续索引的表时必须使用sorted
,因为在ipairs
中未指定顺序。
pairs
答案 1 :(得分:2)
pairs
doesn't iterate in any particular order(无论是否排序)。
table.sort
仅适用于 lists –使用键[1]
,[2]
,[3]
,...,{{ 1}}。
您想要按顺序排列的ID列表。这意味着
在代码中,
[#list]