JS Code block 代码块–数组(array)

星期一, 2023-04-17 | Author: Lee | computer, 前端 | 154 views

数组(array)
判断一个元素是否在数组中
数组进行去重
数组合并
将类数组转换为数组
获取数组中最大值
获取数组中最小值
计算某值在数组中出现的次数
去除数组中假值元素
获取数组的最后一项

/**
 * 判断一个元素是否在数组中
 * @param arr 数组
 * @param val 判断的值
 */
function contains (arr, val) {
    return arr.indexOf(val) != -1 ? true : false;
}
 
/**
 * 数组进行去重
 * @param arr 数组
 * @return {any[]|Array} 去重后的数组
 */
function unique (arr) {
    if (Array.hasOwnProperty('from')) {
        return Array.from(new Set(arr));
    } else {
        var n = {}, r = [];
        for (var i = 0; i < arr.length; i++) {
            if (!n[arr[i]]) {
                n[arr[i]] = true;
                r.push(arr[i]);
            }
        }
        return r;
    }
}
 
/**
 * 数组合并
 * @param a
 * @param b
 * @return {any[]|Array}
 */
function union (a, b) {
    var newArr = a.concat(b);
    return unique(newArr);
}
 
/**
 * 将类数组转换为数组的方法
 * 
 */
function formArray (ary) {
    var arr = [];
    if(Array.isArray(ary)) {
        arr = ary;
    } else {
        arr = Array.prototype.slice.call(ary);
    };
    return arr;
}
 
/**
 * 获取数组中最大值
 * @param arr
 * @return {number}
 */
function arrayMax (arr) {
    return Math.max(...arr)
}
 
/**
* 获取数组中最小值
* @param arr
* @return {number}
*/
function arrayMin(arr) {
    return Math.min(...arr)
}
 
/**
* 计算某值在数组中出现的次数
* @param arr
* @param value
* @return {*}
*/
function countOccurrences(arr, value) {
  return arr.reduce((a, v) => v === value ? a+1 : a+0, 0)
}
 
/**
 * 去除数组中假值元素,比如undefined,null,0,"",NaN都是假值
 * @param   {Array}    arr
 * @return  {Array}
 */
function compact(arr){
    let index = -1,
        resIndex = -1,
        result = [],
        len = arr?arr.length : 0
    while (++index < len) {
        let value = arr[index]
        if (value) {
            result[++resIndex] = value
        }
    }
    return result;
}
 
/**
 * 获取数组的最后一项
 * @since 1.2.1
 * @param array
 * @returns {boolean}
 * @example
 * last(['1,2,3']);
 * // => '3';
 */
function last(array) {
  return Array.isArray(array) && array.slice(-1)[0];
}

Tags:

文章作者: Lee

本文地址: https://www.pomelolee.com/2363.html

除非注明,Pomelo Lee文章均为原创,转载请以链接形式标明本文地址

No comments yet.

Leave a comment

Search

文章分类

Links

Meta