Lua 多维表的遍历中的赋值

  说到Lua的遍历将要使用到循环;先说遍历再说循环;

  遇到这样类似结构的一个table

Data={
    [102]={p1=1,pa={1,2,3}},
    [103]={p1=2,pa={2,3,4}},
    [105]={p1=4,pa={3,4,5}}
}

  目的获得key 值与pa的一个表,实现下

 1 -- 使用table.insert方法插入到新表中
 2 for k,v in pairs(Data) do
 3     print(k,v)
 4     Data2[k]={};
 5     table.insert(Data2[k],v.pa);
 6 end
 7 for k,v in pairs(Data2) do
 8     print(k,v)
 9     for k2,v2 in pairs(v) do
10         print(k,v2)
11     end
12 end

  但是,结果并不如人意;这样实现的结果是将表复杂化了。此时遍历出表的结构为:

1 Data2= {
2     102={1={1=1,2=2,3=3,},},
3     103={1={1=2,2=3,3=4,},},
4     105={1={1=3,2=4,3=5,},},
5 }

  这不是我要的pa,要改变现状;

for k,v in pairs(Data) do
    print(k,v)
    Data3[k]=v.pa;
end
-- print
Data3={
        102={1=1,2=2,3=3,},
        103={1=2,2=3,3=4,},
        105={1=3,2=4,3=5,},
      }        

  为了这个循环结果我浪费了近一天时间;有点笨了,呵呵;当时没有想到,只为了使用查询遍历找到匹配的数据;最初使用的循环还是ipairs,没有输出结果,再然后才晓得ipairs与pairs的区别,ipairs的遍历条件更加苛刻,只能遍历数组类的表,遇到nil值 就会退出。所以ipairs 只适于一些结构以及数据相对简单且key最好从1开始,很注重顺序;对于pairs就随意得多,可以将任意表无序遍历。

Lua 多维表的遍历中的赋值

时间: 2024-10-11 22:33:11

Lua 多维表的遍历中的赋值的相关文章

thinPHP中多维数组的遍历

$drug=array( 'ACEI'=>array(array('ch_name'=>'卡托普利','en_name'=>'captopril'),array('ch_name'=>'依那普利','en_name'=>'enalapril'), array('ch_name'=>'赖诺普利','en_name'=>'lisinopril')), 'ARB'=>array(array('ch_name'=>'依普罗沙坦','en_name'=>'

数据库中的二维表—巧借Excel

一维表和二维表的区别         一维表也常称为流水线表格,它和二维表做出的数据透视表最大的区别在于"行总计".判断数据是一维表格还是二维表格的一个最简单的办法,就是看其列的内容--每一列是否是一个独立的参数.如果每一列都是独立的参数那就是一维表,如果每一列都是同类参数那就是二维表. 二维表的建立     开始在网上一直查找如何在数据库中建立二维表,查了很多资料大多是什么静态和动态的sql语句建立,看了看也不是很清楚但是在查询的时候总是出来Excel如何如何,于是便想是否可以在Ex

Cocos2d-x 脚本语言Lua基本数据结构-表(table)

table是Lua中唯一的数据结构,其他语言所提供的数据结构,如:arrays.records.lists.queues.sets等,Lua都是通过table来实现,并且在lua中table很好的实现了这些数据结构.--摘自:<Programming in Lua> 看以下代码,可以很清晰的明白Lua中表的使用: -- Lua中的表,table Config = {hello="Hello Lua",world="World"} -- 赋值方式1,以键=

层次结构和二维表的关系数据存储

摘:Storing Hierarchical Data in a Database Article(翻译版本) 原文链接:http://shiningray.cn/hierarchical-data-database.html 作者:Gijs Van Tulder 翻译:ShiningRay @ NirvanaStudio 无论你要构建自己的论坛,在你的网站上发布消息还是书写自己的CMS程序,你都会遇到要在数据库中存储层次数据的情况.同时,除非你使用一种像XML的数据库,否则关系数据库中的表都不

采用jsp页面与java代码分离的方式写一个简单的二维表

前提:在我们做程序时追求的是高内聚,低耦合,但是如果我们把jsp页面的的代码和java的代码都放在了jsp的代码编写中,使java和jsp高耦合这样的话不仅使jsp代码页面显得很复杂,而且也特别让不利于以后的维护,所以我们有了一个不成文的规范就是分层架构,把javad代码与jsp的代码分离开来,使jsp代码页中更加干净整洁. 下面我将于用jsp和java代码分离的方法做出这样的一个二维表(做一个jsp页面动态显示信息表) 第一步:首先我们需要一个实体类用于存放一个人的一整条信息(根据表格信息有编

【游戏开发】Excel表格批量转换成lua的转表工具

一.简介 在上篇博客<[游戏开发]Excel表格批量转换成CSV的小工具> 中,我们介绍了如何将策划提供的Excel表格转换为轻便的CSV文件供开发人员使用.实际在Unity开发中,很多游戏都是使用Lua语言进行开发的.如果要用Lua直接读取CSV文件的话,又要写个对应的CSV解析类,不方便的同时还会影响一些加载速度,牺牲游戏性能.因此我们可以直接将Excel表格转换为lua文件,这样就可以高效.方便地在Lua中使用策划配置的数据了.在本篇博客中,马三将会和大家一起,用C#语言实现一个Exce

数组的三种方式总结、 多维数组的遍历及 Arrays类的常用方法总结

一.数组的三种方式总结 1.创建数组 Java语言使用new操作符来创建数组,语法如下: arrayRefVar = new dataType[arraySize]; 上面的语法语句做了两件事: 一.使用 dataType[arraySize] 创建了一个数组. 二.把新创建的数组的引用赋值给变量 arrayRefVar. 数组变量的声明,和创建数组可以用一条语句完成,如下所示: dataType[] arrayRefVar = new dataType[arraySize]; 另外,你还可以使

Lua的Table表使用例子(便于使用查询)

一.table.insert() 1.1 1 local countries = {"China", "England", "Brazil"} 2 --尾插法(Pos不填,默认插入尾部) 3 table.insert(countries, "France") 4 --头插法(首部插入) 5 table.insert(countries, 1, "Australia") 6 7 dump(countries)

用angularjs在循环遍历中绑定ng-model(转载---CSDN博客 )

用angularjs在循环遍历中绑定ng-model CSDN博客 原文  http://blog.csdn.net/chen2991101/article/details/19764263 angularjs的双向绑定非常的好用,当修改了一个地方的值后另外一个地方也同步修改了,如果用平时的js来写的话需要写很多代码,但是用了angularjs后只需要几行代码就能轻松搞定. 想做一个类似于淘宝的改价的功能,就是当用户拍下了宝贝后卖家给你调价的那个功能,界面就像这样: 当修改了折扣或者直接填写了优