4
A
回答
3
我将:
步骤1:合并两个表到双{{2,},{3,B},{1 ,c}}
第2步:对配对进行排序。
第3步:取消合并结果数组。
table1 = {2,3,1}
table2 = {"a","b","c"}
-- Comparison function
function compare(x, y)
return x[1] < y[1]
end
-- Step 1: Merge in pairs
for i,v in ipairs(table1) do
table1[i] = {table1[i], table2[i]}
end
-- Step 2: Sort
table.sort(table1, compare)
-- Step 3: Unmerge pairs
for i, v in ipairs(table1) do
table1[i] = v[1]
table2[i] = v[2]
end
for i = 1,#table1 do
print(table1[i], table2[i])
end
0
试试这个代码,其中使用标准的功能table.sort
:
table1 = {2,3,1}
table2 = {"a","b","c"}
table3 = {}
for i,v in ipairs(table1) do
table3[table2[i]]=v
end
table.sort(table1, function (a,b)
return table2[a] <= table2[b]
end)
table.sort(table2, function (a,b)
return table3[a] <= table3[b]
end)
print("table1")
for i,v in ipairs(table1) do
print(i,v)
end
print("table2")
for i,v in ipairs(table2) do
print(i,v)
end
5
该函数不修改任何一个表中,并返回根据第一排序的第二个表。您可以在第一个表中传递键的比较,如table.sort
。
local sort_relative = function(ref, t, cmp)
local n = #ref
assert(#t == n)
local r = {}
for i=1,n do r[i] = i end
if not cmp then cmp = function(a, b) return a < b end end
table.sort(r, function(a, b) return cmp(ref[a], ref[b]) end)
for i=1,n do r[i] = t[r[i]] end
return r
end
例如:
local table1 = {2, 3, 1}
local table2 = {"a","b","c"}
local sorted = sort_relative(table1, table2)
print(table.unpack(sorted))
结果:
c a b
+0
这确实是一种优雅和干净的方法。正如谚语所说的那样,“有一种方法可以让猫变皮”。 – Tarik 2015-02-11 10:32:47
1
我用键值对,并定期排序功能做的工作:
table1 = {2,3,1}
table2 = {"a","b","c"}
table3 = {}
for i, v in ipairs(table2) do
table3[table1[i]] = v
end
table.sort(table1)
table2 = {}
for i = 1,#table1 do
table2[i]=table3[table1[i]]
end
table3=nil
for i = 1,#table1 do
print(table1[i], table2[i])
end
相关问题
- 1. MySQL Select Statement - 两个表格,按其他表格排序一个表格
- 2. 如何同时插入两个表格
- 3. 在sqlalchemy中外连接两个表时按顺序排序
- 4. 如何根据另一个有序表格对表格进行排序?
- 5. 如何通过不同表格中的两个相同属性进行排序?
- 6. 按另一个列表的顺序对一个列表排序
- 7. 并行排序两个不同的列表使用jQuery排序
- 8. 使用Javascript排序表格
- 9. 使用CSV排序表格
- 10. 如何排列两个表格而不使其内容重叠?
- 11. Google表格脚本:在电子表格中按字母顺序排序表
- 12. 表格格式,列顺序
- 13. 表格排序
- 14. 如何用两个表格中的唯一行创建表格
- 15. 当两个网格在同一页面上时排序
- 16. 如何记住jQuery表格排序中的先前排序顺序
- 17. 如何在一个Excel表格中创建两个表格使用Visual Studio ETL?
- 18. 使用Javascript按数字和字母顺序排序表格
- 19. 使包含表格的一个div分为两个div,其中包含表格
- 20. 如何坚持jfx表格列的排序顺序
- 21. MySQL:如何顺序查询两个表?
- 22. 使用jquery tablesorter对两个表集合中的表格数据进行排序
- 23. 使用Scala中的其中一个的排序对三个列表排序
- 24. 自动对表格中的多个表格进行排序
- 25. 用两个键排序Python列表,但只有一个按相反顺序
- 26. 如何排序一个数组列表并设置另一个列表中的java相同的顺序
- 27. 如何在两个列表视图中同步列顺序?
- 28. 如何在一个表格行中使用两个ng-repeat?
- 29. Python:排序列表使用另一个列表顺序,具有不同的长度,没有'排序'
- 30. SQL:顺序由不同的表格
有趣的方法但成本太高。 – Tarik 2015-02-11 07:30:08