
我理解下你的意思
你是要把 T_letter_tbl 中所有元素的 letter标签和 和 hope_letter_tbl 中的元素比较,如果 发现重复 的 则删除 T_letter_tbl 中的 重复标签吗?
一般做法用 lua 做这种很容易,但是要注意方法,不是比较,那样遍历比较 效率太低。先把 需要比较的 table 的元素作为 索引 建立一个 hash
直接取元素 进行 标签判断,
下面是一个演示:tableprint 自定义的输出,可以删去,自己选择输出方式
function tableprint ( tbl, name )
name = name or "table"
local prompt = ' '
local i = 1
local printed = {}
local function tostring2 ( var )
if (type( var) == "string" ) then
return '"' var '"'
end
return tostring(var )
end
local function itor ( t , i )
printed[ tostring( t)] = true;
for key , ele in pairs (t ) do
if not (type( ele) == "table" ) then
print( string format('%s[%s] = %s;' , stringrep( prompt, i ), tostring2 ( key ),tostring2 (ele )) )
elseif printed [tostring( ele)] then
print( string format('%s[%s] = %s;' , stringrep( prompt, i ), tostring2 ( key ),tostring2 (ele )) )
else
print( string format('%s[%s] = {' , stringrep( prompt, i ), tostring2 ( key )) )
i = i + 1
itor( ele, i)
i = i - 1
print( string format('%s};' , stringrep( prompt, i )) )
end
end
end
print( stringformat( "%s = {" , name ) )
itor( tbl, i)
print("};" )
end
-----------------------------------------------------
tbl_letter_HOPE = {
[1] = "bbbbbb";
[2] = "ffffff";
[3] = "cccccc";
[4] = "xxxxxx";
[5] = "eeeeee";
};
tbl_letter_T = {
[1] = {["letter"] = "Y"};
[2] = {["letter"] = "M"};
[3] = {["letter"] = "P"};
[4] = {["letter"] = "K"};
[5] = {["letter"] = "bbbbbb"};
[6] = {["letter"] = "R"};
[7] = {["letter"] = "Q"};
[8] = {["letter"] = "xxxxxx"};
[9] = {["letter"] = "L"};
[10] = {["letter"] = "D"};
[11] = {["letter"] = "B"};
[12] = {["letter"] = "ffffff"};
[13] = {["letter"] = "Z"};
[14] = {["letter"] = "T"};
[15] = {["letter"] = "["};
[16] = {["letter"] = "cccccc"};
[17] = {["letter"] = "E"};
[18] = {["letter"] = "C"};
[19] = {["letter"] = "W"};
[20] = {["letter"] = "I"};
[21] = {["letter"] = "F"};
[22] = {["letter"] = "eeeeee"};
[23] = {["letter"] = "O"};
[24] = {["letter"] = "X"};
[25] = {["letter"] = "U"};
[26] = {["letter"] = "S"};
};
--- 根据 tbl_letter_HOPE 中的元素 去除 tbl_letter_T 中的元素
--
local function main ()
local tbl_erase = {}
for key, ele in pairs(tbl_letter_HOPE) do
-- 不考虑 元素权重则 改为 = true
tbl_erase[tostring(ele)] = (tbl_erase[tostring(ele)] or 0) + 1
end
for key, ele in pairs(tbl_letter_T) do
if tbl_erase[eleletter] then
-- 移除 整行 [12] = {["letter"] = "ffffff"};
tbl_letter_T[key] = nil
-- 还是 一个标签 letter
--tbl_letter_T[key]letter = nil
end
end
tableprint(tbl_letter_T)
end
startTime = ostime()
main()
print( stringformat(">> This function cost: %s ms", tostring(ostime()-startTime) ) )
附
如果只想 获得去除给定元素后的 table
可以先 复制原 tbl_letter_T
注意:
不要用 浅复制 你之前 那个代码 可能 就是 希望做一个 tbl_letter_T 的副本
但是 使用 浅复制 相当于仅复制了指向table的句柄。
tbl_Interim = tbl_letter_T -- 2个变量指向同一个 table表要用
for key, ele in pairs(tbl_letter_T) dotbl_Interim [key] = ele
end
这种方法和上次给你说的不一样,现在你不需要指定 input 和 td 的 id,只需要 table 有个 id 就可以。JS 会寻找 table 内所有的 input,然后赋值给 td。唯一要保证的是你的 table 结构要和例子中的保持一致。使用传统的 Javascript 确实很费时间,因为现在有各种 Javascript 框架,应用起来比较方便,省时。建议你在基本掌握 Javascript 后学习一下,推荐 jQuery。
<script type="text/javascript">
function assignValues() {
// 设置 table id
var table_id = 'st';
// 获取 table 元素
var table = documentgetElementById(table_id);
// 获取 table 内的全部 input
var textinputs = tablegetElementsByTagName('input');
// 循环
for(var i = 0; i < textinputslength; i++) {
// 将 textinput 的值置于 textinput 上一级 td 节点的下一个同级 td 节点中
textinputs[i]parentNodenextSiblinginnerHTML = textinputs[i]value;
}
};
</script>
<table>
例子中你给出的table
</table>
<input type="button" value="赋值" onclick="assignValues();" />
一般这种取值你可以给INPUT加上一个自定义属性如
(''+'
');
去的时候直接是
$("input[tdindex='3']")eq(0)val();
//
tdindex属性就是自定义的属性,可任意取,这边可以理解成第3列的input元素。
1、JS获取表格的简便方法:获取tbody:tBodies 获取thead:tHead 获取tfoot:tFoot 获取行tr:rows 获取列td:cells
使用实例: oTabletBodies[0] oTabletHead[0] oTabletFoot[0] oTablerows[1] oTablecells[1]
2、遍历
var oTable=documentgetElementById("表格id");
oTabletBodies[0]可以看成是rows和cells组成的二维数组,用两个for循环嵌套遍历一下就可以了
以上就是关于LUA 关于取出两个table中不同元素的算法。全部的内容,包括:LUA 关于取出两个table中不同元素的算法。、怎样取得table中td里面全部input 的值,到td 中. 新提问、jquery获取table里INPUT的值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)