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

标签 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 代码)让我可以在不知道所有条目的情况下迭代整个表格?

提前致谢!

最佳答案

我认为获取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]));
}

关于javascript - 使用 lua.vm.js 在 javascript 中迭代 Lua 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24386641/

相关文章:

javascript - 如何通过事件更改弹出窗口的延迟?

javascript - 删除第二个最近的 <tr>

javascript - NodeJS 设置通配符路由或 url 重写

mysql - CryptDB - 无法连接到代理(错误 1105 (HY000) : (proxy) all backends are down)

lua - table.insert(t, i) 和 t[#t+1] = i 有什么区别?

javascript - 输入聊天消息时 Firebase 发出警告

javascript - 会有 HTML5 剪贴板 API 吗?

c++ - 使用 Sol2 将 LUA 序列安全地传递给 C++

lua - Lua 中的 const 和 close 关键字实际上有什么作用吗?

c++ - 如何重装cudnn?