我想要一张如下表格:
var dst,src = { "edf" : {"zyx" : "right"} };
dst = JSON.parse(JSON.stringify(src));
dst["a"] = 1;
src.edf.zyx = "wrong";
console.log(src, dst);
这是应该的,但
local Users = {}
local function GetUsers (user)
--cycle through all Users
local Id = GetUserID (user)
local Age = GetAge (user)
local Type = GetType (user)
--Id returns ID of User (value about 8 char length: 27296654)
table.insert (Users, {[Id] = {Age = Age, Type = Type}}
end
如果我致电#Users == 0
,则会返回正确的值。
如何让Users[Id].Age
工作?
因为我想循环通过所有用户来检查用户是多次进入还是缺失。
它们需要通过IDS进行分类。
我还想过用#
将ID转换为单词
因为单词将按照我希望的方式计算。
我想用
制作它string.char()
示例表如下所示:
for i = 1, #Users do
所以#Users必须为3,但它显示为0。 但我可以称之为Age并输入表格,这意味着他们在。 当索引这么高的数字时,表是否有问题?
答案 0 :(得分:4)
表t的长度被定义为任何整数索引n,使得t [n]不是nil而t [n + 1]是nil ;此外,如果t 1为零,则n可以为零。对于常规数组,非n值从1到给定n,其长度恰好是n,即其最后一个值的索引。如果阵列有"孔" (也就是说,其他非零值之间的nil值),那么#t可以是直接在nil值之前的任何索引(也就是说,它可以将任何这样的nil值视为数组的末尾)。
您正在使用词典,因此# operator
并不像您期望的那样工作。唯一的方法是使用pair(..)迭代整个表。
function getTableLength(T)
local count = 0
for _ in pairs(T) do
count = count + 1
end
return count
end