js排序与重组的实例讲解


Posted in Javascript onAugust 28, 2017

前几天同学发给我一个问题,思路想整理一下,也供大家参考。实际上这道题本质就是考察的是去重与排序的问题。好了闲话少说,上题。

js排序与重组的实例讲解

function input(req){
if(req<=100){
var arr=[],arr1=[];
for(var i=0;i<req;i++){
var num=parseInt(Math.random()*(1000-1)+1);
arr.push(num);
if(arr1.indexOf(arr[i])==-1)
arr1.push(arr[i]);

}
for(var n=0;n<arr1.length-1;n++){
for(var m=n+1;m<arr1.length;m++){
if(arr1[n]>arr1[m]){
var temp=arr1[n];
arr1[n]=arr1[m];
arr1[m]=temp;
}
}
}

console.log(arr.length);
console.log(arr.join(' ')); 

console.log(arr1.length);
console.log(arr1.join(' ')); 
}else{
alert("不好意思,你输入的数已经大于100了");
} 
}

解析:关于排序的,有冒泡排序,快速排序,插入排序,希尔排序,选择排序,归并排序,堆排序,基数排序,计数排序,桶排序等等。

关于数组去重的实现方法,常用的有遍历数组,对象键值对,数组下标判断,排序后相邻去除法,优化遍历数组等等。

本题排序方法采用一种最基本的方法就是冒泡方法,冒泡方法实质就是相邻排序了,依次比较相邻的两个值,如果我比你小,我就在你前面,反之就在你后面,按照这种方法多次,直到顺序正确。

去重的方法也是采用最基本的遍历数组法,思路是新建立一个数组,值不在数组中,就填入数组,简单粗暴。哈哈。采用了js中的indexof()方法,indexof()方法原意指的是可返回某个指定的字符串在字符中首次出现的位置。但是它也有这样的一个性质,注意:如果要检索的字符串没有出现,则返回-1,这正是我们需要的。

看题干:N个1到1000之间的随机整数(N小于等于100)

整数:嗯嗯此时应该想到这个parseInt()方法;

随机:想到了Math.random();

1到1000的随机整数: var num=parseInt(Math.random()*(1000-1)+1);这种组合的方法蛮有效果的。

填入数组:arr.push()方法;接下来判断原数组的数是否在新数组arr1中,if(arr1.indexOf(arr[i])==-1) arr1.push(arr[i]);

填入数组的事已经完成了,接下来就是排序的问题了。冒泡(简单粗暴)。生成随机数组的个数,就用数组的长度喽,arr.length.

还有提到的是用空格隔开:join(' ');

在chrome,f12下跑的结果如下:

js排序与重组的实例讲解

去重和排序后的结果

js排序与重组的实例讲解

以上这篇js排序与重组的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
需要做特殊处理的DOM元素属性的访问
Nov 05 Javascript
原生JS实现表单checkbook获取已选择的值
Jul 21 Javascript
完美解决IE低版本不支持call与apply的问题
Dec 05 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
Mar 30 Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 Javascript
JavaScript之promise_动力节点Java学院整理
Jul 03 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
Jul 24 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
Oct 25 Javascript
基于JavaScript 实现拖放功能
Sep 12 Javascript
uploadify插件实现多个图片上传并预览
Sep 30 Javascript
原生js无缝轮播插件使用详解
Mar 09 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
Aug 28 #Javascript
JS自定义函数实现时间戳转换成date的方法示例
Aug 27 #Javascript
JavaScript学习笔记之惰性函数示例详解
Aug 27 #Javascript
Vue实现typeahead组件功能(非常靠谱)
Aug 26 #Javascript
vue下跨域设置的相关介绍
Aug 26 #Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
Aug 26 #Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
Jun 19 #Javascript
You might like
php使用MySQL保存session会话的方法
2015/06/18 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
2015/09/06 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
jQuery实现的模拟弹出窗口功能示例
2016/11/24 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
Python的Flask框架中web表单的教程
2015/04/20 Python
python下paramiko模块实现ssh连接登录Linux服务器
2015/06/03 Python
Python基础中所出现的异常报错总结
2016/11/19 Python
python实现二分查找算法
2017/09/21 Python
Python实现生成密码字典的方法示例
2019/09/02 Python
基于CSS3 animation动画属性实现轮播图效果
2017/09/12 HTML / CSS
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
澳大利亚在线性感内衣商店:Fantasy Lingerie
2021/02/07 全球购物
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
自主招生自荐信格式
2013/12/03 职场文书
24岁生日感言
2014/01/13 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
小学英语复习计划
2015/01/19 职场文书