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. cc 攻击

    糟糕,系统又被攻击了 原创 二马读书 二马读书 10月16日 几年前,我们的电商平台遭遇过一次CC攻击(一种分布式网络攻击,后面有详细介绍

  2. https://stackoverflow.com/questions/3232943/update-value-of-a-nested-dictionary-of-varying-depth

    https://stackoverflow.com/questions/3232943/update-value-of-a-nested-dictionary-of-varying-depth p.p ...

  3. redis6.0多线程

    https://www.sohu.com/a/331991216_268033 执行还是单线程     读写解析多线程   6.0 https://segmentfault.com/a/1190000 ...

  4. 多线程c++11编程题目

    /*题目:子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次. 如此循环50次,试写出代码.子线程与主线程必有一个满足条件(flag ...

  5. C++ Primer Plus读书笔记(十)对象和类

    1.类 不废话,上定义 class ClassName { public: xxx; private: xxx; protected: xxx; } private部分数据只能通过public 提供的 ...

  6. JavaScript this 关键字详解

    一.前言 this关键字是JavaScript中最复杂的机制之一.它是一个很特别的关键字,被自动定义在所有函数的作用域中.对于那些没有投入时间学习this机制的JavaScript开发者来说,this ...

  7. 《进击吧!Blazor!》第一章 3.页面制作

    作者介绍 陈超超Ant Design Blazor 项目贡献者拥有十多年从业经验,长期基于.Net技术栈进行架构与开发产品的工作,Ant Design Blazor 项目贡献者,现就职于正泰集团 写专 ...

  8. bzoj2654(loj20069)

    2654: tree Time Limit: 30 Sec  Memory Limit: 512 MB Description 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有ne ...

  9. codevs3639

    题目描述 Description 给出一棵树,求出树的中心. 为了定义树的中心,首先给每个结点进行标号.对于一个结点K,如果把K从树中删除(连同与它相连的边一起),剩下的被分成了很多块,每一块显然又是 ...

  10. 小白的springboot之路(十九)、集成swagger(com.spring4all篇)

    0-前言 集成swagger,有两种方式: 一种在前面已经介绍过了,直接集成官方的springfox-swagger2的方式,这种方式需要在配置类中配置 第二种方式是这里要介绍的方式,国人写的com. ...