小白白的起步01

刚看到一个小小的js题,就当练练手了.害怕自己被安逸所杀死.....

                                                                              ------- 题记
复制代码

如题:有一个大数组,var a = ['1','2','3',...] a的长度是100,内容填充随机整数的字符串,请先构造此数组a ,然后实现去重

分析: 首先了解的信息是此数组的长度是100, 那就是lengtn为100,内容是随机数 那就 循环100次填充随机数呗! 但是有个问题就是 内容是随机整数字符串,那么 这些数据的范围是多少呢?

解决思路:既然不确定范围,又遵循着封装的思想 那么就将产生随机数的功能封装成一个函数,要产生多少个就循环多少次调用,由于数组内容是字符串的形式 所以要将产生的随机数抓换为字符串的形式, 关于去重应该是ES6的set方法了.但是个人更加喜欢用算法的原理来实现,由于排序可以是升序和降序所以也要考虑

(顺便再实现个排序的功能)

代码如下:

                function randNum(min, max) {
			//产生随机数的方法  数据范围的最小值 和 最大值 比如要1到10的数据 那就传入1,10
			return parseInt(Math.random() * (max - min) + min);
		}

		//数组去重
		function noRepeat(arr) {
			var hash = {};
			var newArr = [];
			arr.forEach((ar, i) => {
				if(!hash[ar]) {
					hash[ar] = true;
					newArr.push(ar);
				}
			})
			return newArr;
		}

		//实现排序   
		function paiXu(arr, code) {
			if(code == 1) {
				arr.sort(minish)
			}
			if(code == 0) {
				arr.sort(magnify)
			}
		}
		<!--降序-->
		function minish(value1, value2) {
			return value1 - value2
		}

		<!--增序-->
		function magnify(value1, value2) {
			return value2 - value1
		}

		var arr = [];

		for(let i = 0; i < 100; i++) {
			var nums = randNum(1, 10);
			arr.push(nums.toString());
		}

		var newArr2 = noRepeat(arr);
		console.log(newArr2);
		
		paiXu(newArr2,1);
		console.log(newArr2);
复制代码

有那么点封装的意思,个人比较喜欢这样写,这样重用率会高那么一点,第一次写文章请多多执教!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值