当前位置: 首页 > news >正文

Lua实战之布尔值(boolean)排序

Description

将 targetTbl 按 bValue 进行排序(true > false),bValue 相同则按 id 进行顺序(由小到大)排序!

local targetTbl = {
	{id = 1, bValue = false},
	{id = 2, bValue = true},
	{id = 3, bValue = true},
	{id = 4, bValue = false},
	{id = 5, bValue = true}
}

Implemention

table.sort(targetTbl, function(a, b)
	if a.bValue == b.bValue then
		return a.id < b.id
	end
	return a.bValue
end)
for _, data in pairs(targetTbl) do
	print(data.id, data.bValue)
end
--[[
2	true
3	true
5	true
1	false
4	false
]]

Expansion

没有稳定排序的条件,以布尔值 bValue 为最终排序依据进行排序!

true > false

table.sort(targetTbl, function(a, b)
	return a.bValue and not b.bValue
end)
for _, data in pairs(targetTbl) do
	print(data.id, data.bValue)
end
--[[
5	true
2	true
3	true
4	false
1	false
]]

false > true

table.sort(targetTbl, function(a, b)
	return not a.bValue and b.bValue
end)
for _, data in pairs(targetTbl) do
	print(data.id, data.bValue)
end
--[[
1	false
4	false
3	true
2	true
5	true
]]

ps

运算符优先级:not > and > or

相关文章:

  • 生命的厚味
  • Lua 使用 os.time 获取时间戳需谨慎
  • 用BAT和VBS搜集AD中的客户PC资料
  • Lua string.format() 使用整理
  • 一个成功创业者的心得
  • Lua实战之以非科学记数法输出小数
  • SVN服务器的搭建与使用
  • 犹太人常说的理财故事
  • SVN设置强制注释才能提交
  • 35岁前成功的12条黄金法则
  • SVN比较两个文件差异
  • 李嘉诚传给年青人的人生忠告
  • 2021-1024程序员节
  • 成就富翁:赚钱八大定律
  • 安卓系统管理软件_【安卓软件】玩机必备综合型系统管理工具
  • 11111111
  • AWS实战 - 利用IAM对S3做访问控制
  • Facebook AccountKit 接入的坑点
  • HomeBrew常规使用教程
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • nfs客户端进程变D,延伸linux的lock
  • PermissionScope Swift4 兼容问题
  • v-if和v-for连用出现的问题
  • vue数据传递--我有特殊的实现技巧
  • 搭建gitbook 和 访问权限认证
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 给新手的新浪微博 SDK 集成教程【一】
  • 和 || 运算
  • 微信支付JSAPI,实测!终极方案
  • 用mpvue开发微信小程序
  • 怎么将电脑中的声音录制成WAV格式
  • MPAndroidChart 教程:Y轴 YAxis
  • 仓管云——企业云erp功能有哪些?
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (4)(4.6) Triducer
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (层次遍历)104. 二叉树的最大深度
  • (翻译)terry crowley: 写给程序员
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (一)基于IDEA的JAVA基础12
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • *Django中的Ajax 纯js的书写样式1
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .net core 依赖注入的基本用发
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • @GlobalLock注解作用与原理解析
  • [ C++ ] STL---stack与queue
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [Angular 基础] - 表单:响应式表单
  • [C++进阶篇]STL中vector的使用
  • [Enterprise Library]调用Enterprise Library时出现的错误事件之关闭办法