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 相关文章推荐
jquery学习笔记 用jquery实现无刷新登录
Aug 08 Javascript
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Sep 13 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
Jul 14 Javascript
jQuery .tmpl() 用法示例介绍
Aug 21 Javascript
js读取cookie方法总结
Oct 31 Javascript
ECMAScript6函数剩余参数(Rest Parameters)
Jun 12 Javascript
详解angular用$sce服务来过滤HTML标签
Apr 11 Javascript
vue.js中过滤器的使用教程
Jun 08 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
Jun 29 jQuery
vue富文本编辑器组件vue-quill-edit使用教程
Sep 21 Javascript
Layui table field初始化加载时进行隐藏的方法
Sep 19 Javascript
JavaScript实现弹出窗口效果
Dec 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巧获服务器端信息
2006/12/06 PHP
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
php 页面执行时间计算代码
2008/12/04 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
学习Javascript闭包(Closure)知识
2016/08/07 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
vue.js中$set与数组更新方法
2018/03/08 Javascript
layui 监听select选择 获取当前select的ID名称方法
2019/09/24 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
jquery实现的放大镜效果示例
2020/02/24 jQuery
js实现九宫格抽奖
2020/03/19 Javascript
python 实现数组list 添加、修改、删除的方法
2018/04/04 Python
Python常见内置高效率函数用法示例
2018/07/31 Python
python进阶之多线程对同一个全局变量的处理方法
2018/11/09 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
Python FFT合成波形的实例
2019/12/04 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
基于html5 canvas做批改作业的小插件
2020/05/20 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
EJB2和EJB3在架构上的不同点
2014/09/29 面试题
董事长职责范文
2013/11/08 职场文书
汽车机电维修工求职信
2014/09/30 职场文书
导游词之河北邯郸
2019/09/12 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python