js sort tricks All In One
js sort tricks All In One
js 排序技巧
const arr = [
{ label: 'False 1 ', disabled: false, },
{ label: 'False 2 ', disabled: false },
{ label: 'Ture 1 ', disabled: true, },
{ label: 'False 3 ', disabled: false, },
{ label: 'Ture 2 ', disabled: true, },
{ label: 'Ture 3 ', disabled: true, },
{ label: 'False 4 ', disabled: false, },
];
// JSON.stringify(arr, null, 4);
const subTableList = () => {
// sort 排序里面的函数意思是 按照 disabled 属性(先 false 后 true) 的方式排序, 并按照索引的先后顺序不变
const temp = [...arr];
// log(`\ntemp 1`, temp);
// return temp.sort((a, b) => (a.disabled ^ b.disabled ? 1 : 0) * (a.disabled ? 1 : -1));
return temp.sort((a, b) => (a.disabled ^ b.disabled) * a.disabled);
// return temp.sort((a, b) => (a.disabled ^ b.disabled) * +a.disabled);
}
const MapList = () => {
const temp = [...arr];
// log(`\ntemp 2`, temp);
// const result = new Map();
const result = [];
for (let i = 0; i < temp.length; i++) {
const item = temp[i];
if(!item.disabled) {
result.push(item);
} else {
result.unshift(item);
}
}
return result;
// return temp.map((a, b) => (a.disabled ^ b.disabled ? 1 : 0) * (a.disabled ? 1 : -1));
// return temp.sort((a, b) => (a.disabled ^ b.disabled ? 1 : 0) * (a.disabled ? 1 : -1));
}
const log = console.log;
log(`subTableList =\n`, subTableList());
log(`\nMapList =\n`, MapList());
/*
node map.js
subTableList =
[ { label: 'False 1 ', disabled: false },
{ label: 'False 2 ', disabled: false },
{ label: 'False 3 ', disabled: false },
{ label: 'False 4 ', disabled: false },
{ label: 'Ture 1 ', disabled: true },
{ label: 'Ture 2 ', disabled: true },
{ label: 'Ture 3 ', disabled: true } ]
MapList =
[ { label: 'Ture 3 ', disabled: true },
{ label: 'Ture 2 ', disabled: true },
{ label: 'Ture 1 ', disabled: true },
{ label: 'False 1 ', disabled: false },
{ label: 'False 2 ', disabled: false },
{ label: 'False 3 ', disabled: false },
{ label: 'False 4 ', disabled: false } ]
*/
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
js ^ operator
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_XOR
const a = 1; // 00000000000000000000000000000001
const b = 3; // 00000000000000000000000000000011
console.log(a ^ b); // 00000000000000000000000000000010
// 2
// ^ 异或, 11 的 0, 01,10 的 1,00 的 0
1 * true;
1
1 * false;
0
0 * true;
0
0 * false;
0
(false ^ true);
1
(true ^ false);
1
(false ^ false);
0
(true ^ true);
0
(false ^ true) * false;
1
(false ^ true) ^ true;
0
!false;
true
!!false;
false
!true;
false
!!true;
true
+false;
0
-false;
-0
+true;
1
-true;
-1
refs
xgqfrms 2012-2020
www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
js sort tricks All In One的更多相关文章
- js sort方法根据数组中对象的某一个属性值进行排序(实用方法)
js sort方法根据数组中对象的某一个属性值进行排序 sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {nam ...
- js sort map by key
js sort map by key Map map to array // Array.from() Object let obj = {}; for(let key of Object.keys( ...
- js & sort array object
js & sort array object sort array object in js https://flaviocopes.com/how-to-sort-array-of-obje ...
- js sort() 排序用法(转载)
原文:https://blog.csdn.net/m0_37885651/article/details/80016718 sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字 ...
- js sort() reverse()
数组中存在的两个方法:sort()和reverse() 直接用sort(),如下: ,,,,,,,,,,,]; console.log(array.sort());ps:[0, 1, 2, 2, 29 ...
- js sort() 排序的问题
默认并非按照大小排序,而是根据Assic来排序的,但接受一个排序函数.所以正确的使用姿势应该是这样的: var arr = [0,1,5,10,15]; function sequence(a,b){ ...
- JS sort()实用技巧
[1, 3, 9, 2].sort(); // Returns: [1, 2, 3, 9] // 返回 [1, 2, 3, 9] --这没错,但它还有更强大的用法,比如这样: var data=[ ...
- JS sort() 方法
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序.要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较. array.s ...
- js -- sort() 使用排序函数
JavaScript sort() 方法 JavaScript Array 对象 定义和用法 sort() 方法用于对数组的元素进行排序. 语法 arrayObject.sort(sortby) 参数 ...
随机推荐
- argparse的简单使用
简单记录一下argparse的用法 这个是针对我做区块链的一些demo时需要用到的,仅把用到了的一些操作记录,argparse很强大,更多细致的操作可以参考:https://docs.python.o ...
- 自定义Decoder继承ByteToMessageDecoder实现解码的小案例
ByteToMessageDecoder是一种ChannelInboundHandler,可以称为解码器,负责将byte字节流(ByteBuf)转换成一种Message,Message是应用可以自己定 ...
- 解读腾讯敏捷研发核心驱动力 腾讯TAPD TAPD 2020-12-17
解读腾讯敏捷研发核心驱动力 腾讯TAPD TAPD 2020-12-17
- XA Transactions
XA Transactions XA is a two-phase commit protocol that is natively supported by many databases and t ...
- 在这个应用中,我使用了 MQ 来处理异步流程、Redis 缓存热点数据、MySQL 持久化数据,还有就是在系统中调用另外一个业务系统的接口,对我的应用来说这些都是属于 RPC 调用,而 MQ、MySQL 持久化的数据也会存在于一个分布式文件系统中,他们之间的调用也是需要用 RPC 来完成数据交互的。
在这个应用中,我使用了 MQ 来处理异步流程.Redis 缓存热点数据.MySQL 持久化数据,还有就是在系统中调用另外一个业务系统的接口,对我的应用来说这些都是属于 RPC 调用,而 MQ.MySQ ...
- https://www.cnblogs.com/AloneSword/p/3209653.html
proc/sys/net/ipv4/下各项的意义 - 孤剑 - 博客园 https://www.cnblogs.com/AloneSword/p/3209653.html
- pull push 监控指标
Prometheus 原理介绍 - 知乎 https://zhuanlan.zhihu.com/p/70090800 Prometheus由Go语言编写而成,采用Pull方式获取监控信息,并提供了多维 ...
- WebRTC 泄漏真实 IP 地址
WebRTC(网页即时通信,Web Real-Time Communication) 它允许浏览器内进行实时语音或视频对话,而无需添加额外的浏览器扩展.包括 Chrome.Firefox.Opera. ...
- 网页小实验——用canvas生成精灵动画图片
实验目标:借助canvas把一张国际象棋棋子图片转换为一组适用于WebGL渲染的精灵动画图片,不借助其他图片处理工具,不引用其他库只使用原生js实现. 初始图片如下: 一.图片分割 将初始图片分割为六 ...
- 【译】.NET 5. 0 中 Windows Form 的新特性
自从 Windows Form 在 2018 年底开源并移植到 .NET Core 以来,团队和我们的外部贡献者都在忙于修复旧的漏洞和添加新功能.在这篇文章中,我们将讨论 .NET 5.0 中 Win ...