使用lua.vm.js在javascript中迭代Lua表

时间:2014-06-24 12:27:27

标签: javascript lua

不久前,我发布了一个THIS问题,关于lua.vm.js和javascript之间的互动。

现在我的问题略有不同:

让我们假设我在REPL

中有以下代码
model = {}
model['test1'] = 1
model['test3'] = 2
model['test4'] = 3
model['test5'] = 4
model['test6'] = 5
local window = js.global
window.model = model

因为我使用的是lua.vm.js,我现在可以通过javascript获取所有值了

window.model.get('test1')
window.model.get('test2')
window.model.get('test3')

但问题是我必须事先知道表中的条目是" test1"," test2"等等。

javascript中是否存在一种方式(或者可能通过添加更多Lua代码),我可以在不知道所有条目的情况下遍历整个表格?

提前致谢!

1 个答案:

答案 0 :(得分:1)

我认为获取model中密钥列表的最简单方法是直接使用Lua。

从我所看到的lua.vm.js表对象不支持迭代,但您可以从JavaScript中执行此操作:

my_keys = L.execute('local r = {}; for k in pairs(model) do r[#r+1] = k end; return unpack(r)')

然后你可以像这样循环:

for (var i in my_keys) {
    console.log(my_keys[i], window.model.get(my_keys[i]));
}