冒泡排序

var arr = [, , , , , , , ];
function test(){
for (var i = ; i < arr.length - ; i++){
for (var j = i + ; j < arr.length; j++){
var tempi = arr[i]; //获取第一个值,并与后一个值比较
var tempj = arr[j];
if (tempi > tempj){
arr[i] = tempj;
arr[j] = tempi;//如果前一个值比后一个值大,那么相互交换
}
}
}
console.log(arr); //return arr;
}
test(arr); //[1, 2, 3, 4, 6, 9, 49, 50]

简单粗暴的使用sort()方法进行升序、降序排列

var arr = [, , , , , , , ];
function test(arr) {
if( arr.length < ){
return //如果数组长度小于1,直接返回,没有比较的必要
}
return arr.sort(sortNum)
};
function sortNum(a,b) {
return a - b; //倒序就是b-a
}
test(arr) //[1, 2, 3, 4, 6, 9, 49, 50]

还可以利用sort 方法的返回值,做数组的随机排序

var arr = [, , , , , , , ];

function test(arr) {
if(arr.length < ) {
return
}
return arr.sort(randomSrot)
}
function randomSrot(a,b) {
return Math.random() > 0.5 ? - : ;
}
test(arr);
//利用Math.random()方法可以返回0~1之间的随机数,然后和0.5比较,来决定返回值是1还是-1

数组去重的几种方法

1.最常使用的indexOf()
var arr = [,,,,,,,,,,,];
function test(arr) {
var result = []; //用来存放新数组
var len = arr.length;
for(var i = ; i < len; i++) {
if(result.indexOf(arr[i])== -) { //如果新数组查询不到当前的数组成员,就把他添加进新数组
result.push(arr[i])
}
}
return result;
}
test(arr);//[1, 12, 13, 8, 9, 7, 5]

2.最简洁的方法,使用es6 的新数据类型set()
var arr = [,,,,,,,,,,];
var arr2 = [...new Set(arr)]; //[1, 12, 13, 8, 9, 7, 5]

记录下js几种常见的数组排序和去重的方法的更多相关文章

  1. ElasticSearch 学习记录之ES几种常见的聚合操作

    ES几种常见的聚合操作 普通聚合 POST /product/_search { "size": 0, "aggs": { "agg_city&quo ...

  2. Web前端几种常见的实现水平垂直居中的方法

    第一种: 父容器不设置宽度,用定位实现水平垂直居中. <!DOCTYPE html> <html lang="en"> <head> <m ...

  3. 记录下 js各种证件的正则验证

    身份证 /(^\d{15}$)|(^\d{17}([0-9]|X)$)/    护照 /^[a-zA-Z0-9]{3,21}$/   /^(P\d{7})|(G\d{8})$/    军官证或士兵证 ...

  4. js几种常见排序的实现

    1. 冒泡排序 定义: 比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个 数据交换. 这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就"沉"到数组第 ...

  5. .Net中几种常见的页面跳转传值方法

    1.ASP Server对象Execute方法 ASP Server对象的Execute方法可以在执行当前页面的过程中将另一个页面执行结果的内容插入到当前页面的输出中.Execute方法带一个参数,是 ...

  6. Chrome:开发者模式下js文件中代码显示在一行的解决方法

    比如我随便打开一个js文件,可以发现它的代码都挤在一行中,这对我们查找一些变量很不友好 解决方式:点击图中标红的那个按钮就可以了

  7. 你值得关注的几种常见的js设计模式

    前言 潜水了一段时间,今天空闲时间复盘下之前的知识点,聊聊 js 几种常见的设计模式. 掌握 JavaScript 中常见的一些设计模式,对我们书写规范性代码,可维护性代码有很大的帮助. ps:最近在 ...

  8. SQL Server-5种常见的约束

    引自:http://www.cnblogs.com/dekevin/p/4772235.html SQLServer 中有五种约束, Primary Key 约束. Foreign Key 约束. U ...

  9. JS数组去重的几种常见方法

    JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...

随机推荐

  1. 激活Microsoft Word 2010

    先关闭系统的防火墙(像360安全卫士这类软件),再运行“office 2010 正版验证激活工具”,并点击“Install/Uninstall KMService”安装“KMS”服务器(如下图,在弹出 ...

  2. react 表单组件 异步渲染,值不会生效,需要手动改变对应组件的显示值

    楼主遇到这个问题已经是第二次,上次我们项目经理给帮忙解决了一次,这次又遇到了,刚开始不知道是这个问题,上次做的笔记也没找到了,估计又忘记了,这里抽三分钟记录一下, 当然这里这样做有个前提:就是你已经和 ...

  3. Python3类和实例之获取对象信息

    当我们拿到一个对象的引用时,如何知道这个对象是什么类型,有哪些方法呢 使用type() 判断对象类型使用type()函数 基本类型都可以用type()判断 <class 'int'> &g ...

  4. 微服务之Polly熔断策略

    NET Core 微服务之Polly熔断策略 紧接着上一篇说,咱们继续介绍Polly这个类库 熔断策略(Circuit-breaker) 如果调用某个目标服务出现过多超时.异常等情况,可以采取一定时间 ...

  5. Acquire and Release Fences

    转载自:   http://preshing.com/20130922/acquire-and-release-fences/ Acquire and release fences, in my op ...

  6. [转帖]阿里的JDK预热warmup过程

    预热warmup过程 https://blog.csdn.net/wabiaozia/article/details/82056520 Jwarmup 原理是记录上一次运行时已经变成native co ...

  7. 数据结构 -- 链表(LinkedList)

    链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成. 每个结点包括两个部分 ...

  8. PAT(B) 1014 福尔摩斯的约会(Java)

    题目链接:1014 福尔摩斯的约会 注意 三个字眼:"第1对","第2对","第1对",因此如果你用了循环,别忘了break,因为后面也可能 ...

  9. JVM 内存溢出详解(栈溢出,堆溢出,持久代溢出、无法创建本地线程)

    出处:  http://www.jianshu.com/p/cd705f88cf2a 1.内存溢出和内存泄漏的区别 内存溢出 (Out Of Memory):是指程序在申请内存时,没有足够的内存空间供 ...

  10. 【BFS】Help the Princess!

    题目描述 The people of a certain kingdom make a revolution against the bad government of the princess. T ...