JS开发中的实用技巧

1、获取指定范围内的随机数

/*
   获取min~max之间的随机整数
*/
function getRandomNum(min,max){
    return Math.floor(Math.random()*(max-min+1))+min;
}

2、随机获取数组中的元素

/*
    随机获取数组中的某一个元素
*/
function getRandomFromArr(arr){
    return arr[Math.floor(Math.random()*arr.length)];
}

3、打乱数组的顺序

/*
    打乱数组的顺序
*/
function getRandomArr(arr){
    // var resArr = [...arr]; // ES6标准

    var resArr = Array.from(arr);
    return resArr.sort(function(){
        return Math.random() - 0.5;
    });
}

4、对象转换成数组(前提条件:该对象必须包含属性length)

/*
   对象转成数组 (参数obj是一个对象类型数组且obj.hasOwnProperty('length')为true)
*/
function getObjToggleArr1(obj){
    return Array.prototype.slice.call(obj); // 第一种
}
function getObjToggleArr2(obj){
    return [].slice.call(obj); // 第二种
}
function getObjToggleArr3(obj){
    return Array.prototype.apply.call(obj); // 第三种
}


/*
   对象转成数组 (参数obj是一个对象类型数组)只作为理解
*/
function getObjToggleArr(obj){
    var copyObj = Object.assign({},obj); // 另外复制一份obj(浅拷贝)
    if(!copyObj.hasOwnProperty('length')){
        copyObj['length']=Object.keys(obj).length;
    }
    return [].slice.call(copyObj); 
}

5、获取数组中的最大值和最小值

/*
    获取数组中的最大值和最小值
*/
function maxAndMin(arr){
    return {
       max:Math.max.apply(null,arr.join(',').split(',')),
       min:Math.min.apply(null,arr.join(',').split(','))
    }
}

6、生成指定长度的随机字母数字字符串

function getRandomStr(len) {
    for (var str = ''; str.length < len; str += Math.random().toString(36).substr(2));
    return str.substr(0, len)
}

7、找出数组中出现次数最多的元素,并给出其出现过的位置

function getMaxAndIndex(arr) {
    var obj = {};
    arr.forEach(function(item, index) {
        if (!obj[item]) {
            obj[item] = {
                indexs: [index]
            }
        } else {
            obj[item]['indexs'].push(index);
        }
    });
    var num = 0; //记录出现次数最大值
    var str = ''; //记录出现次数最多的字符
    var reArr; //返回最大值的位置数组
    for (var attr in obj) {
        var temp = obj[attr]['indexs'];
        if (temp.length > num) {
            num = temp.length;
            str = attr;
            reArr = temp;
        }
    }
    return {
        maxStr: str,
        indexs: reArr
    }
}

 

 

 

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值