如何将数据和表插入到现有的表中?

军刀

将新的行和表插入已经存在的行时遇到麻烦。

让我们调用源SourceFile.lua及其简化的内容:

SourceFile = {};

SourceFile.list = {
    BrandName1 = {
        number = 10,
        products = {
            "Product1", 3,
            "Product2", 4,
            "Product3", 7,
        },
    },
    BrandName2 = {
        number = 5,
        products = {
            "Product1", 10,
            "Product2", 3,
            "Product3", 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", 21, "MyProduct2", 95 }
      }
    },
    BrandName1 = {
      number = 10,
      products = { "Product1", 3, "Product2", 4, "Product3", 7 }
    },
    BrandName2 = {
      number = 5,
      products = { "Product1", 10, "Product2", 3, "Product3", 6 }
    }
  }
}

我究竟做错了什么?

我是lua的新手,很确定这是显而易见的,但对我而言不是。请帮我。


加成

在获得这些答案之后,我还找到了一种方法来逐个插入新的品牌名称:

SourceFile.list.MyBrandName1 = {
    number = 12,
    products = {
      "MyProduct1", 21,
      "MyProduct2", 95,
    },
}

这不能完全回答我的问题,但是对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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何仅将某些字段插入到 hive 表中,重用现有的表架构?

将数据插入到现有的SQL Server表中

如何将Pandas DataFrame插入现有的PostgreSQL表中?

如何使用外键将值插入到现有的 SQL Server 表中

使用SSIS,如何将Excel工作表中的新数据插入到我现有的SQL Server表中

如何将熊猫数据框合并到现有的reportlab表中?

如何将记录插入到具有gorm的现有多个表中

BigQuery:使用分片表将表插入到现有的 Google 分析中

将完整的ADO Recordset插入到现有的ACCESS表中而没有LOOP

从Excel中获取数据并将其插入到现有的Word表中?

如何将Excel数据插入C#中的现有表

如何将现有的Google工作表插入Google电子表格?

如何将现有的单例表视图数据保存在核心数据中?

如何使用Python(无PySpark)将熊猫数据框插入现有的Hive外部表中?

如何使用 bash 和 libreoffice calc headless 将几行数据插入到现有的 .odt 文件中?

如何将数据插入到Hive(0.13.1)表中?

如何将xml数据插入到表中?

将数据表插入现有的Access文件中

如何将数据的时间窗口插入到表中,该窗口与具有唯一约束的现有行部分重叠

如何将新数据追加到现有的配置单元表

将Excel数据导入到现有的SQL Server 2005表中

如何将表头添加到现有的jasper表组件中?

如何将列重写(复制)到现有的SQLite数据库中

如何使用现有表和新列将数据插入临时表

如何将数据插入表中?

如何将数据插入具有引用和作用域的表中

如何将另一个表中的数据插入具有自动递增ID的现有表中?

动态地将json数据行插入到现有表中

蜂巢:如何将数据从分区表插入到分区表中?