编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。

首先定义个fn用来返回整数的取值范围:

function getRand(a,b){
    var rand = Math.ceil(Math.random()*(b-a)+a);
    return rand;
}

再写一个func用来做去重校验:

function checkArrIn(rand,array){
    if(array.indexOf(rand) > -1){
        return true
    }
    return false;
}

最后是整体实现:

function fn(n, min, max) {
    var arr = [];
    var isNum = !isNaN(Number(n));//判断n是不是一个数字,包含字符串类型的数字
    var isRandOk = (n >= min && n <= max && n <= (max - min)) ? true : false;//判断n的取值是否符合要求
    if (n && isRandOk && isNum) {
        for (var i = 0; i < n; i++) {
            var rand = getRand(min, max);
            if (checkArrIn(rand, arr)) {
                i--
            } else {
                arr.push(rand)
            }
        }
    }
    return arr;
}

原文地址:https://www.cnblogs.com/SallyShan/p/11465093.html

时间: 2024-08-09 20:25:59

编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。的相关文章

编写一个js函数,该函数有一个n(数字类型),其返回值是一个数组,该数组内是n个随机且不重复的整数,且整数取值范围是[2,32]

今天在公众号里边看到这个问题,就自己写了下,发现自己还是有许多没注意到的,在此记录, //返回一个随机整数 function getRandom( min , max ){ var rand = Math.round( Math.random() * (max - min) + min ); return rand; }; //重复性验证 function isRepeat(arr,n){ if (arr.indexOf(n) > -1) { return true; }; return fal

函数指针及函数指针数组的妙用

笔者在开发某软件过程中遇到这样一个问题,前级模块传给我二进制数据,输入参数为 char* buffer和 int length,buffer是数据的首地址,length表示这批数据的长度.数据的特点是:长度不定,类型不定,由第一个字节(buffer[0])标识该数据的类型,共有256(28 )种可能性.我的任务是必须对每一种可能出现的数据类型都要作处理,并且我的模块包含若干个函数,在每个函数里面都要作类似的处理.若按通常做法,会写出如下代码: void MyFuntion( char* buff

oracle中的常用函数、字符串函数、数值类型函数、日期函数,聚合函数。

一.字符串的常用函数. --一.oracle 字符串常用函数 --1. concat 连接字符串的函数,只能连接[两个]字符串. 字符写在括号中,并用逗号隔开! --2.“||”符号可以连接多个字符串 直接用||将多个字符链接即可. --3. dual? dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录. select concat('lo','ve')from dual; select concat('o','k')from dual; sel

[转]什么是C++虚函数、虚函数的作用和使用方法

我们知道,在同一类中是不能定义两个名字相同.参数个数和类型都相同的函数的,否则就是“重复定义”.但是在类的继承层次结构中,在不同的层次中可以出现名字相同.参数个数和类型都相同而功能不同的函数.例如在例12.1(具体代码请查看:C++多态性的一个典型例子)程序中,在Circle类中定义了 area函数,在Circle类的派生类Cylinder中也定义了一个area函数.这两个函数不仅名字相同,而且参数个数相同(均为0),但功能不同,函数体是不同的.前者的作用是求圆面积,后者的作用是求圆柱体的表面积

什么是C++虚函数、虚函数的作用和使用方法

我们知道,在同一类中是不能定义两个名字相同.参数个数和类型都相同的函数的,否则就是“重复定义”.但是在类的继承层次结构中,在不同的层次中可以出现名字相同.参数个数和类型都相同而功能不同的函数.例如在例12.1(具体代码请查看:C++多态性的一个典型例子)程序中,在Circle类中定义了 area函数,在Circle类的派生类Cylinder中也定义了一个area函数.这两个函数不仅名字相同,而且参数个数相同(均为0),但功能不同,函数体是不同的.前者的作用是求圆面积,后者的作用是求圆柱体的表面积

Kindeditor JS 取值问题以及上传图片后回调等

KindEditor.ready(function (K) { var editor = K.create('#editor_id', { //上传管理 uploadJson: '/js/kindeditor/asp.net/upload_json.ashx', //文件管理 fileManagerJson: '/js/kindeditor/asp.net/file_manager_json.ashx', allowFileManager: true, //设置编辑器创建后运行的回调函数 aft

php 自定义函数和原生函数执行效率问题

从网上看到的,有些时候原生函数的效率可能没有自定义的函数高 例如range函数,用它来初始化一个键值与键名相等的,且键名差值相同的数组,原生函数使用效率反而不高, 这可能是因为range函数不仅仅实现了这一种需求,这个函数还可以接受一些其他参数去执行算法,返回值 所以当我们仅需要某个功能时,可能使用自己的函数会运行更快,原生函数会经过各种判断,才能执行想要的方法(自己想的,可能不对) 例: function ranges($step = 5, $max = 20) { if ($step < 1

javaScript的函数(Function)对象的声明(@包括函数声明和函数表达式)

平时再用js写函数的时候,一般都是以惯例 function fn () {} 的方式来声明一个函数,在阅读一些优秀插件的时候又不免见到 var fn = function () {} 这种函数的创建,究竟他们用起来有什么区别呢,今天就本着打破砂锅问到底的精神,好好来说说这个让人神魂颠倒的--函数声明.  函数声明 函数声明示例代码 function fn () { console.log('fn 函数执行..'); // code.. } 这样我们就声明了一个名称为fn的函数,这里出个思考,你认

python 函数(function)、函数(def)、函数(return)

函数  function 什么是函数: 函数是可以重复执行的语句块,可以重复使用 函数是面向过程编程的最小单位 函数的作用: 1.用于封装语句块,提高代码的重用性 2.定义用户级别的函数 def 语句  (把编码打包) call(调用) 语法: def函数名(形参列表): 语句块(代码块) 说明: 1.函数的名字就是语句块的名称 2.函数名的命名规则与变是一名相同(函数名必须为标识符) 3.函数名是一个变量(不要轻易对其赋值) 4.函数有自己的名字空间,在函数外部不可以访问函数内部的变量(注意)