方案一:
拆分表再组装表
local TaskType={
zhixian="zhixian",
zhuxian="zhuxian",
shijie="shijie"
}
local Task=
{
[1]={type=TaskType.zhuxian,name="主线1"},
[2]={type=TaskType.shijie,name="世界1"},
[3]={type=TaskType.zhixian,name="支线1"},
[4]={type=TaskType.zhixian,name="支线2"},
[5]={type=TaskType.shijie,name="世界2"},
[6]={type=TaskType.zhuxian,name="主线2"},
}
local taskspr={}
local shijie={}
local zhuxian={}
local zhixian={}
function chaifen()
for curIndex = 1, #Task do
if Task[curIndex].type == TaskType.shijie then
--print(Task[curIndex].name)
table.insert(shijie,Task[curIndex])
end
if Task[curIndex].type == TaskType.zhuxian then
table.insert(zhuxian,Task[curIndex])
end
if Task[curIndex].type == TaskType.zhixian then
table.insert(zhixian,Task[curIndex])
end
end
end
--表的拼接,在原表的基础上附加另一table
function append(tableA, tableB)
for i = 1, #tableB, 1 do
tableA[#tableA+1] = tableB[i]
end
return tableA
end
function taskSort( taskspr )
for _,quest in pairs(taskspr) do
print(quest.name)
end
end
chaifen(Task)
taskspr=append(taskspr,shijie)
taskspr=append(taskspr,zhuxian)
taskspr=append(taskspr,zhixian)
taskSort(taskspr)
方案二:
对表内元素进行交换位置
local TaskType={
zhixian="zhixian",
zhuxian="zhuxian",
shijie="shijie"
}
local Tasktab=
{
[1]={type=TaskType.zhuxian,name="主线3"},
[2]={type=TaskType.shijie,name="世界1"},
[3]={type=TaskType.zhixian,name="支线1"},
[4]={type=TaskType.zhixian,name="支线2"},
[5]={type=TaskType.shijie,name="世界2"},
[6]={type=TaskType.zhuxian,name="主线2"},
}
function jiaohuan(index1,index2)
local temp=Tasktab[index1]
Tasktab[index1]=Tasktab[index2]
Tasktab[index2]=temp
end
function chaifen2(Task)
local index=1
local zhuxianindex=index
local zhixianindex=index
for curIndex = 2, #Task do
if Task[curIndex].type == TaskType.shijie then
jiaohuan(index,curIndex)
index=index+1
zhuxianindex=index+1
end
if Task[curIndex].type == TaskType.zhuxian then
jiaohuan(zhuxianindex,curIndex)
zhuxianindex=zhuxianindex+1
zhixianindex=zhuxianindex+1
end
--[[]]--
if Task[curIndex].type == TaskType.zhixian then
jiaohuan(zhixianindex,curIndex)
zhixianindex=zhixianindex+1
end
end
end
function taskprint( taskspr )
for _,quest in pairs(taskspr) do
print(quest.name)
end
end
chaifen2(Tasktab)
taskprint(Tasktab)
学习中,望有更好的方法,多多指教留言!!!!!!!!!!