如何解决如何将数据和表插入到现有的表中?
在将新的行和表插入到已经存在的行和表中时遇到麻烦。
让我们将其称为源 SourceFile.lua 及其简化的内容:
SourceFile = {};
SourceFile.list = {
BrandName1 = {
number = 10,products = {
"Product1",3,"Product2",4,"Product3",7,},BrandName2 = {
number = 5,10,6,-- and so on
}
我想做这样的事情:
require 'SourceFile'
local myData = {
BrandName2 = { -- add new products for the existing brand
products = {
"Product4",2,MyBrandName1 = { -- add new brand
number = 12,products = {
"MyProduct1",21,"MyProduct2",95,-- and so on
}
table.insert(SourceFile.list,myData)
但是我的代码中有什么问题,我得到以下结果(以inspect打印):
{
list = { {
BrandName2 = {
products = { "Product4",2 }
},MyBrandName1 = {
number = 12,products = { "MyProduct1",95 }
}
},BrandName1 = {
number = 10,products = { "Product1",7 }
},BrandName2 = {
number = 5,6 }
}
}
}
我在做什么错了?
我是lua的新手,很确定这很明显,但对我而言不是。请帮帮我。
在回答了这些问题之后,我还找到了一种方法来逐个插入新的品牌名称:
SourceFile.list.MyBrandName1 = {
number = 12,}
这不能完全回答我的问题,但是对lua新手来说可能有用。
解决方法
table.insert
将其第二个参数添加到数组(其第一个参数)。您的SourceFile.list
仅应具有字符串键,因此不能作为数组使用。您将需要一个递归函数来将数据从一个表合并到另一个表:
local function meld(data,newData)
for k,v in pairs(newData) do
local oldValue = data[k]
if type(oldValue) ~= 'table' or type(v) ~= 'table' then
-- One of the values is not a table,so let's clobber the old value.
data[k] = v
else
-- Both are tables.
meld(oldValue,v)
end
end
end
meld(SourceFile.list,myData)
,
您正在将品牌名称表推入品牌名称列表。 这使它成为品牌名称列表+带有品牌名称的表格。
myData
这会将SourceFile.list
插入到myData
中。 SourceFile.list
是带有品牌名称的表。
myData
也是带有品牌名称的表。
在列表中列出。
您有2种选择来解决此问题:
- 分别插入每个品牌名称
- 使函数将
SourceFile.list
的内容合并到const nodeMajor = Number(process.versions.node.split('.')[0])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。