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的更多相关文章

  1. js sort方法根据数组中对象的某一个属性值进行排序(实用方法)

    js sort方法根据数组中对象的某一个属性值进行排序 sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {nam ...

  2. 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( ...

  3. js & sort array object

    js & sort array object sort array object in js https://flaviocopes.com/how-to-sort-array-of-obje ...

  4. js sort() 排序用法(转载)

    原文:https://blog.csdn.net/m0_37885651/article/details/80016718 sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字 ...

  5. js sort() reverse()

    数组中存在的两个方法:sort()和reverse() 直接用sort(),如下: ,,,,,,,,,,,]; console.log(array.sort());ps:[0, 1, 2, 2, 29 ...

  6. js sort() 排序的问题

    默认并非按照大小排序,而是根据Assic来排序的,但接受一个排序函数.所以正确的使用姿势应该是这样的: var arr = [0,1,5,10,15]; function sequence(a,b){ ...

  7. JS sort()实用技巧

    [1, 3, 9, 2].sort(); // Returns: [1, 2, 3, 9] // 返回 [1, 2, 3, 9]   --这没错,但它还有更强大的用法,比如这样: var data=[ ...

  8. JS sort() 方法

    如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序.要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较. array.s ...

  9. js -- sort() 使用排序函数

    JavaScript sort() 方法 JavaScript Array 对象 定义和用法 sort() 方法用于对数组的元素进行排序. 语法 arrayObject.sort(sortby) 参数 ...

随机推荐

  1. pycharm2021永久激活

    Pycharm破解版地址: 链接: https://pan.baidu.com/s/1dEkzKRFMaeNjWF4h7y2TdQ 提取码: eqr3  Anaconda地址:版本是python3.6 ...

  2. Redis布隆过滤器与布谷鸟过滤器

    大家都知道,在计算机中,IO一直是一个瓶颈,很多框架以及技术甚至硬件都是为了降低IO操作而生,今天聊一聊过滤器,先说一个场景: 我们业务后端涉及数据库,当请求消息查询某些信息时,可能先检查缓存中是否有 ...

  3. OPC UA 统一架构) (二)

    OPC UA (二) 重头戏,捞取数据,才是该干的事.想获取数据,先有数据源DataPrivade,DataPrivade的数据集合不能和BaseDataVariableState的集合存储同一地址, ...

  4. java创建线程的多种方式

    java创建线程的四种方式 1.继承 Thread 类 通过继承 Thread 类,并重写它的 run 方法,我们就可以创建一个线程. 首先定义一个类来继承 Thread 类,重写 run 方法. 然 ...

  5. SpringBoot-Maven打包压缩瘦身

    SpringBoot-Maven打包压缩瘦身 一.Spring Boot 可执行 jar 分析 1.1 打包 1.2 两种 jar 的比较 1.3 一次打包两个 jar 二.SpringBoot迭代发 ...

  6. Jenkins (自动使用docker容器发布java.war +tomcat)

    一.大概流程 因为目前没有找Jenkins 和docker 之间比较友好的插件,所以只能使用这种比较low 的方式来实现自动部署了. 1.Jenkins在gitlab拉取项目并编译. 2.将编译后的代 ...

  7. Java异常封装(自定义错误信息和描述)

    一.checked异常和unchecked异常 checked异常: unchecked异常: 二.异常封装示例 2.1.添加一个枚举LuoErrorCode.java如下: 2.2.创建一个异常类B ...

  8. 关于Spring Boot的博客集合

    掘金: 关于Spring Boot的博客集合 CSDN: Spring Boot教程 掘金: SpringBoot2 简书: Spring Boot 核心技术 天码营 Spring Data JPA: ...

  9. HDU-6703 array (线段树)

    题意 一个长度为n的排列a,\(\forall i\in [1,n] ,1\le a_i \le n\) , m次操作,每次操作: (1,pos),把 \(a_{pos}\) 变为\(a_{pos} ...

  10. hdu4719 Oh My Holy FFF 线段树维护dp

    题意:给你一个长度为n的数组v,你需要把这个数组分成很多段,你需要保证每一段的长度不能超过k我们设一共有m段,每一段右边界那个数为bi那么我们要使得sum(bi*bi-b(i-1))最大 (1< ...