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 相关文章推荐
js版本A*寻路算法
Dec 22 Javascript
JAVASCRIPT style 中visibility和display之间的区别
Jan 22 Javascript
javascript实现省市区三级联动下拉框菜单
Nov 17 Javascript
ArtEditor富文本编辑器增加表单提交功能
Apr 18 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
Dec 26 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
Mar 09 Javascript
Django与Vue语法的冲突问题完美解决方法
Dec 14 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
Sep 14 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
Oct 19 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
Dec 10 Javascript
微信小程序 网络通信实现详解
Jul 23 Javascript
javascript实现倒计时提示框
Mar 02 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目录与文件操作
2011/12/30 PHP
在windows服务器开启php的gd库phpinfo中未发现
2013/01/13 PHP
解析PHP的session过期设置
2013/06/29 PHP
PHP统计二维数组元素个数的方法
2013/11/12 PHP
php中smarty区域循环的方法
2015/06/11 PHP
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
2011/03/25 Javascript
利用谷歌地图API获取点与点的距离的js代码
2012/10/11 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
解决node.js安装包失败的几种方法
2016/09/02 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
Python快速排序算法实例分析
2017/11/29 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
Python读取JSON数据操作实例解析
2020/05/18 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
医学生自荐信
2013/12/03 职场文书
即将毕业大学生自荐信
2014/01/24 职场文书
气象学专业个人求职信
2014/03/15 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
2014年采购部工作总结
2014/11/20 职场文书
公司人事任命通知
2015/04/20 职场文书
2015年基层党支部工作总结
2015/05/21 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书