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入门指南
Aug 15 Javascript
详解vue 中使用 AJAX获取数据的方法
Jan 18 Javascript
Vue.js事件处理器与表单控件绑定详解
Mar 20 Javascript
Web开发使用Angular实现用户密码强度判别的方法
Sep 27 Javascript
Vue组件库发布到npm详解
Feb 17 Javascript
详解如何制作并发布一个vue的组件的npm包
Nov 10 Javascript
使用vuex解决刷新页面state数据消失的问题记录
May 08 Javascript
一文快速了解JQuery中的AJAX
May 31 jQuery
详解搭建一个vue-cli的移动端H5开发模板
Jan 17 Javascript
小程序跳转H5页面的方法步骤
Mar 06 Javascript
Vue自定义全局弹窗组件操作
Aug 11 Javascript
Vue3中toRef与toRefs的区别
Mar 24 Vue.js
利用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 日,周,月点击排行统计
2012/01/11 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
php单例模式的简单实现方法
2016/06/10 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
元素绑定click点击事件方法
2015/06/08 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
2016/05/12 Javascript
理解JavaScript原型链
2016/10/25 Javascript
angularjs中使用ng-bind-html和ng-include的实例
2017/04/28 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
vue2.0 路由不显示router-view的解决方法
2018/03/06 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
原生JS实现记忆翻牌游戏
2020/07/31 Javascript
Python 开发Activex组件方法
2009/11/08 Python
Python BS4库的安装与使用详解
2018/08/08 Python
浅谈django channels 路由误导
2020/05/28 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
刘胡兰的英雄事迹材料
2014/02/11 职场文书
公司晚会策划方案
2014/05/17 职场文书
就业协议书范本
2014/10/08 职场文书
地陪导游欢迎词
2015/01/26 职场文书
2015年司机年终工作总结
2015/05/14 职场文书
微信早安问候语
2015/11/10 职场文书
vue首次渲染全过程
2021/04/21 Vue.js
用CSS3画一个爱心
2021/04/27 HTML / CSS
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android