`

Js工具类

阅读更多

Js工具类

 

常用方法整理如下:

/* 随机排序 */
function randomSort() {
    return Math.random() > .5 ? -1 : 1;
}

/* 生成随机数组 */
function randomArr(sourceArr, length, zeroFlag) {
    var targetArr = [];
    var arrTemp1 = sourceArr.concat();
    var arrTemp2 = sourceArr.concat();
    for(var i = 0; i < length; i ++) {
        var index = 0;
        if(zeroFlag) {
            index = randomArrVal(arrTemp1);
        } else {
            index = randomArrVal(arrTemp1) - 1;
        }
        targetArr.push(arrTemp2[index]);
    }
    return targetArr.sort();
}

/* 取指定数组中不重复的随机数 */
function randomArrVal(sourceArray) {
    //在数组中产生一个随机索引
    var arrIndex = Math.floor(Math.random() * sourceArray.length);
    var arrValue = parseInt(sourceArray[arrIndex]);
    sourceArray.splice(arrIndex, 1);
    return arrValue;
}

/* 重构数组,使其可以删除指定元素 */
Array.prototype.indexOf = function(val) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] == val) return i;
    }
    return -1;
};
Array.prototype.remove = function(val) {
    var index = this.indexOf(val);
    if (index > -1) {
        this.splice(index, 1);
    }
}

/* 重构数组,增加判断数组是否包含某个元素的方法 */
Array.prototype.in_array = function(e)
{
    for(var i = 0; i < this.length; i++)
    {
        if(this[i] == e)
            return true;
    }
    return false;
}

/* 排列算总数,n为上值,m为下值 */
function permutation(n, m) {
    var front = 1;
    for(var i = 0 ; i < n; i++){
        front = front * (m - i);
    }
    return front;
}

/* 组合算总数,n为上值,m为下值 */
function combination(n, m){
    var front = 1;
    for(var i = 0 ; i < n; i++){
        front = front * (m - i);
    }
    var back = 1;
    for(var i = 1; i <= n; i++){
        back = back * i;
    }
    return front/back;
}

/* 组合拆分 */
function combinationSplit(sourceArr, count) {
    var result = [];
    if(null != sourceArr && sourceArr.length >= count && count >0 ){
        var tempArr = [];
        combineRecursion(sourceArr, 0, count, tempArr, result);
    }
    return result;
}

/* 递归求组合 */
function combineRecursion(arr1, begin, number, arr2, arr3) {
    if(number == 0) {
        var tempArr = arr2.concat()
        arr3.push(tempArr);
        return;
    }
    if(begin == arr1.length) {
        return;
    }
    arr2.push(arr1[begin]);
    combineRecursion(arr1, begin + 1, number - 1, arr2, arr3);
    arr2.remove(arr1[begin]);
    combineRecursion(arr1, begin + 1, number, arr2, arr3);
}

/* 去掉字符串中的所有空格 */
function trimAll(str,is_global)
{
    var result;
    result = str.replace(/(^\s+)|(\s+$)/g,"");
    if(is_global.toLowerCase()=="g")
    {
        result = result.replace(/\s/g,"");
    }
    return result;
}

/* 初始化数组 */
function initArr(length, val) {
    var arr = [];
    for(var i = 0 ; i < length; i++){
        arr.push(val);
    }
    return arr;
}




 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics