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 相关文章推荐
javascript 模式设计之工厂模式详细说明
May 10 Javascript
confirm的用法示例用于按钮操作时确定是否执行
Jun 19 Javascript
JS实现的通用表单验证插件完整实例
Aug 20 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
Oct 24 Javascript
适用于手机端的jQuery图片滑块动画
Dec 09 Javascript
Bootstrap源码解读网格系统(3)
Dec 22 Javascript
前端面试知识点锦集(JavaScript篇)
Dec 28 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
Jan 26 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
windows下vue-cli导入bootstrap样式
Apr 25 Javascript
Puppeteer环境搭建的详细步骤
Sep 21 Javascript
JS实现滑动插件
Jan 15 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
Get或Post提交值的非法数据处理
2006/10/09 PHP
php中json_encode中文编码问题分析
2011/09/13 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
PHP对象递归引用造成内存泄漏分析
2014/08/28 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
解javascript 混淆加密收藏
2009/01/16 Javascript
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
jquery获得下拉框值的代码
2011/08/13 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
一个通过script自定义属性传递配置参数的方法
2014/09/15 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
javascript中传统事件与现代事件
2015/06/23 Javascript
去除html代码里面的script正则方法
2016/05/19 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
深入理解vue Render函数
2017/07/19 Javascript
浅谈vue引入css,less遇到的坑和解决方法
2018/01/20 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
使用Filter过滤python中的日志输出的实现方法
2019/07/17 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
药剂专业学生求职信范文
2013/12/28 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
保护动物倡议书
2014/04/15 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
英语感谢信范文
2015/01/20 职场文书
Oracle中DBLink的详细介绍
2022/04/29 Oracle
Python中的 enumerate和zip详情
2022/05/30 Python
Linux中文件的基本属性介绍
2022/06/01 Servers