记录下js几种常见的数组排序和去重的方法
冒泡排序
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几种常见的数组排序和去重的方法的更多相关文章
- ElasticSearch 学习记录之ES几种常见的聚合操作
ES几种常见的聚合操作 普通聚合 POST /product/_search { "size": 0, "aggs": { "agg_city&quo ...
- Web前端几种常见的实现水平垂直居中的方法
第一种: 父容器不设置宽度,用定位实现水平垂直居中. <!DOCTYPE html> <html lang="en"> <head> <m ...
- 记录下 js各种证件的正则验证
身份证 /(^\d{15}$)|(^\d{17}([0-9]|X)$)/ 护照 /^[a-zA-Z0-9]{3,21}$/ /^(P\d{7})|(G\d{8})$/ 军官证或士兵证 ...
- js几种常见排序的实现
1. 冒泡排序 定义: 比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个 数据交换. 这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就"沉"到数组第 ...
- .Net中几种常见的页面跳转传值方法
1.ASP Server对象Execute方法 ASP Server对象的Execute方法可以在执行当前页面的过程中将另一个页面执行结果的内容插入到当前页面的输出中.Execute方法带一个参数,是 ...
- Chrome:开发者模式下js文件中代码显示在一行的解决方法
比如我随便打开一个js文件,可以发现它的代码都挤在一行中,这对我们查找一些变量很不友好 解决方式:点击图中标红的那个按钮就可以了
- 你值得关注的几种常见的js设计模式
前言 潜水了一段时间,今天空闲时间复盘下之前的知识点,聊聊 js 几种常见的设计模式. 掌握 JavaScript 中常见的一些设计模式,对我们书写规范性代码,可维护性代码有很大的帮助. ps:最近在 ...
- SQL Server-5种常见的约束
引自:http://www.cnblogs.com/dekevin/p/4772235.html SQLServer 中有五种约束, Primary Key 约束. Foreign Key 约束. U ...
- JS数组去重的几种常见方法
JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...
随机推荐
- Leetcode: Find First and Last Position of Element in Sorted Array
Given a sorted array of integers, find the starting and ending position of a given target value. You ...
- Idea 运行测试NoSuchMethodError Junit5
1.背景 环境: macOS 10.13.4 idea: 2016.3 springboot 版本: 2.2.2.RELEASE pom依赖 <dependencies> <depe ...
- ISO/IEC 9899:2011 条款6.2.7——兼容类型与组合类型
6.2.7 兼容类型与组合类型 1.两个类型具有兼容类型,如果它们的类型是相同的.用于判定两个类型是否兼容的其它规则在6.7.2关于类型说明符中,6.7.3关于类型说明符中,6.7.6关于声明符中描述 ...
- OpenStack社区中的GO语言之争
1 背景介绍 Swift之前几乎所有的代码都是用Python实现的,但是性能一直不理想, 社区为了解决性能问题,尝试过很多方法,后来发现用Golang语言进行一部分代码重写, 性能得到了一定的提升,社 ...
- 集合循环删除问题-报错java.util.ConcurrentModificationException解析
java.util.ConcurrentModificationException 异常问题详解 环境:JDK 1.8.0_111 在Java开发过程中,使用iterator遍历集合的同时对集合进行修 ...
- 【动手学深度学习】Jupyter notebook中 import mxnet出错
问题描述 打开d2l-zh目录,使用jupyter notebook打开文件运行,import mxnet 出现无法导入mxnet模块的问题, 但是命令行运行是可以导入mxnet模块的. 原因: 激活 ...
- 一个区分度很大的iOS面试题
@property 后面可以有哪些修饰符?@property中有哪些属性关键字? 属性可以拥有的特质分为四类: 原子性--- nonatomic 特质 在默认情况下,由编译器合成的方法会通过锁定机制确 ...
- 01.轮播图之二 :tableView 轮播
在做这个tablevew轮播的时候,重要的就是修改frame 和view 的翻转了:::: 也是不难的,概要的设计和scroll 轮播是一致的: 首先是 .h 的文件 @interface Table ...
- CTF 专用文件监控系统
# -*- coding: utf-8 -*-#use: python file_check.py ./ import osimport hashlibimport shutilimport ntpa ...
- 最新 网易java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易.京东.去哪儿等10家互联网公司的校招Offer,因为某些自身原因最终选择了网易.6.7月主要是做系统复习.项目复盘.LeetCode与牛客刷题 ...