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 相关文章推荐
juqery 学习之三 选择器 简单 内容
Nov 25 Javascript
datagrid框架的删除添加与修改
Apr 08 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
Oct 11 Javascript
JS获取当前网址、主机地址项目根路径
Nov 19 Javascript
js delete 用法(删除对象属性及变量)
Aug 24 Javascript
js中this用法实例详解
May 05 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
Jun 12 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
Aug 16 Javascript
js实现文字列表无缝滚动效果
Jun 23 Javascript
React数据传递之组件内部通信的方法
Dec 31 Javascript
详解Node.js一行命令上传本地文件到服务器
Apr 22 Javascript
详解如何修改 node_modules 里的文件
May 22 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
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
php+croppic.js实现剪切上传图片功能
2018/08/14 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
图片完美缩放
2006/09/07 Javascript
用ADODB.Stream转换
2007/01/22 Javascript
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
在浏览器窗口上添加遮罩层的方法
2012/11/12 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
JavaScript BASE64算法实现(完美解决中文乱码)
2017/01/10 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
node.js中对Event Loop事件循环的理解与应用实例分析
2020/02/14 Javascript
[02:17]《辉夜杯》TRG战队巡礼
2015/10/26 DOTA
python多进程实现进程间通信实例
2017/11/24 Python
django使用html模板减少代码代码解析
2017/12/12 Python
Python 判断奇数偶数的方法
2018/12/20 Python
Python使用reportlab模块生成PDF格式的文档
2019/03/11 Python
python实现梯度法 python最速下降法
2020/03/24 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
django教程如何自学
2020/07/31 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
Python用access判断文件是否被占用的实例方法
2020/12/17 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
自考生自我鉴定范文
2013/10/01 职场文书
一名老师的自我评价
2014/02/07 职场文书
检察院起诉意见书
2015/05/20 职场文书
丧事酒宴答谢词
2015/09/30 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android