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 arguments 传递给函数的隐含参数
Aug 21 Javascript
JavaScript 一道字符串分解的题目
Aug 03 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
Aug 14 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
Dec 19 Javascript
Javascript根据指定下标或对象删除数组元素
Dec 21 Javascript
javascript中字符串拼接详解
Sep 26 Javascript
jQuery页面加载初始化的3种方法(推荐)
Jun 02 Javascript
深入浅析JavaScript中的Function类型
Jul 09 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
Jan 03 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
Jul 31 Javascript
Vue + Elementui实现多标签页共存的方法
Jun 12 Javascript
jQuery实现的上拉刷新功能组件示例
May 01 jQuery
利用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 intval的测试代码发现问题
2008/07/27 PHP
php SQL Injection with MySQL
2011/02/27 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
javascript中replace( )方法的使用
2015/04/24 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
JavaScript 生成唯一ID的几种方式
2021/02/19 Javascript
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
django Serializer序列化使用方法详解
2018/10/16 Python
python对html过滤处理的方法
2018/10/21 Python
Python3常见函数range()用法详解
2019/12/30 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
python设置中文界面实例方法
2020/10/27 Python
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
英国最大的独立摄影零售商:Park Cameras
2019/11/27 全球购物
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
SQL Server面试题
2016/10/17 面试题
社区端午节活动方案
2014/01/28 职场文书
出生证明公证书
2014/04/09 职场文书
提拔干部考察材料
2014/05/26 职场文书
公司试用期员工自我评价
2014/09/17 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
学校元旦晚会开场白
2015/05/29 职场文书