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 1.0.2
Oct 11 Javascript
jQuery插件 tabBox实现代码
Feb 09 Javascript
更优雅的事件触发兼容
Oct 24 Javascript
jQuery contains过滤器实现精确匹配使用方法
Apr 12 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
Dec 16 Javascript
将字符串中由空格隔开的每个单词首字母大写
Apr 06 Javascript
jquery插件corner实现圆角边框的方法
Mar 09 Javascript
jQuery中的100个技巧汇总
Dec 15 Javascript
动态加载css方法实现和深入解析
Jan 18 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
Apr 14 Javascript
vue自定义指令用法经典实例小结
Mar 16 Javascript
Vue select 绑定动态变量的实例讲解
Oct 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
php中用数组的方法设置cookies
2011/04/21 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
jQuery 技巧小结
2010/04/02 Javascript
对xmlHttp对象方法和属性的理解
2011/01/17 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
JS教程:window.location使用方法的区别介绍
2013/10/04 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
2015/05/18 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
2017/03/21 Javascript
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
echarts整合多个类似option的方法实例
2018/07/10 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
Python3+Appium安装使用教程
2019/07/05 Python
python取均匀不重复的随机数方式
2019/11/27 Python
修改Pandas的行或列的名字(重命名)
2019/12/18 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
Python垃圾回收机制三种实现方法
2020/04/27 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
Prototype如何实现页面局部定时刷新
2013/08/06 面试题
推荐信怎么写
2014/05/09 职场文书
工程催款通知书
2015/04/17 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
社区服务理念口号
2015/12/25 职场文书
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL