javascript 常见工具函数(二)

11.数组等分切片:

this.newMapList = [];
for (var i = 0; i < this.mapDataList.length; i += 2) {
    this.newMapList.push(this.mapDataList.slice(i, i + 2));
}

javascript 常见工具函数(二)_第1张图片

javascript 常见工具函数(二)_第2张图片

12.js做奇偶判断:

if (this.mapDataList.length != 0) {
    this.mapDataList.length % 2 == 0 ? this.isEven = true : this.isEven = false;
}

13.js判断 元素 urls 是否为数组 :

let isarr = Object.prototype.toString.call(urls) === '[object Array]';

14.递归查找子对象或者组件:

/**
* 递归查找
* @param sp
* @param name
*/
public static FindChild(sp: Laya.Sprite3D, name: string) {
    if (sp.name == name) {
        return sp;
    } else {
        let target;
        let vObj;
        let i = sp._children.length;
        while (--i > -1) {
            vObj = sp._children[i];
            target = this.FindChild(vObj, name);
            if (target)
                return target;
        }
    }
}

15.数组乱序:

public static resetArr(arr) {

    var len = arr.length;
    for (var i = 0; i < len; i++) {
        var index = Math.floor(Math.random() * (len - i));
        var tem = arr[index];
        arr[index] = arr[len - i - 1];
        arr[len - i - 1] = tem;
    }
    return arr;
}

16.截取字符串长度常用函数:

//获取字符串长度
public static getLength = function (str) {
    return str.replace(/[\u0391-\uFFE5]/g, "aa").length;  //先把中文替换成两个字节的英文,再计算长度
};


/**
* 截取指定长度的字符串
*/
public static getLengthStr = function (str, length) {
    var tmp = str;
    while (this.getLength(tmp) > length) {
        tmp = tmp.substr(0, tmp.length - 1);
    }
    return tmp;
};

17.返回范围内的值: 限制取值范围

/**
* 返回范围内的值
*/
public static clamp = function (min, value, max) {
    return Math.max(min, Math.min(value, max));
};

javascript 常见工具函数(二)_第3张图片

18.在权重数组中随机一个index

//在权重数组中随机一个index
public static randomIndexByWeight = function (array, total) {

    if (!total) {
        total = 0;
        for (var i = 0; i < array.length; i++) {
            if (array[i] == 0) continue;
            total += array[i];
        }
    }
    var ran = this.intRange(0, total);
    var index = 0;
    for (; index < array.length; index++) {
        if (array[index] == 0) continue;
        ran -= array[index];
        if (ran <= 0)
            return index;
    }
    return 0;
};

javascript 常见工具函数(二)_第4张图片

19.数组元素反转:

(1)  方法一:  reverse方法

var arr1 = ['a', 'b', 'c', 'd', 'e']
console.log('source arr1 =', arr1)
arr1.reverse()
console.log('target arr1 =', arr1)

(2) 方法二:元素交换位置

var arr = [1, 2, 3, 4, 5, 6]
console.log('source arr =', arr)
for (var i = 0; i < arr.length / 2; i++) {
    var temp = arr[i]
    arr[i] = arr[arr.length - 1 - i]
    arr[arr.length - 1 - i] = temp
}
console.log('target arr =', arr)

20.数组的随机函数:

/**
* 随机整数 [min, max)
* @param {最小值} min
* @param {最大值} max
*/
randomInt (min, max) {
    return Math.floor(Math.random() * (max - min) + min);
}


/**
* 从数组中随机一个元素
* @param {数组} array
*/
arrayRandom (array) {
    var idx = this.randomInt(0, array.length);
    return array[idx];
}


/**
* 从数组中随机一个元素并从数组中删除
* @param {数组} array
*/
shiftRandom (array) {
    var idx = this.randomInt(0, array.length);
    var value = array[idx];
    array.removeAt(idx);
    return value;
}

你可能感兴趣的:(javascript,开发语言,ecmascript)