数组常用实例封装(上)

数组常用实例封装(上)

大家在开发的时候应该知道,有很多常见的实例操作。比如数组去重,打乱数组等。这些操作,代码一般不会很多,实现的逻辑也不会很难,下面的代码,我解释就不解释太多了,打上注释,相信大家就会懂了。但是,用的地方会比较,如果项目有哪个地方需要用,如果重复写的话,就是代码沉余,开发效率也不用,复用基本就是复制粘贴!这样是一个很不好的习惯,大家可以考虑一下把一些常见的操作封装成函数,调用的时候,直接调用就好!

1.数组去重
//方法一:
function removeRepeatArray(arr) {
    return arr.filter(function (item, index, self) {
        return self.indexOf(item) === index;
    });
}
//方法二:
var removeRepeatArray = (arr) => {
    return Array.from(new Set(arr))
}
//方法三:
var removeRepeatArray = (arr) => {
    return [...new Set(arr)]
}
2.数组最大值
//方法一:
function maxArr(arr) {
    return Math.max.apply(null, arr);
}
//方法二:
var maxArr = (arr) => {
    return Math.max(...arr);
}
3.数组最小值
//方法一:
function minArr(arr) {
    return Math.min.apply(null, arr);
}
//方法二:
var maxArr = (arr) => {
    return Math.min(...arr);
}
4.数组求和
//方法一:递归
function sum(arr) {
    var len = arr.length;
    if (len == 0) {
        return 0;
    } else if (len == 1) {
        return arr[0];
    } else {
        return arr[0] + sum(arr.slice(1));
    }
}
//方法二:常规循环
function sum(arr) {
    var s = 0;
    for (var i = arr.length - 1; i >= 0; i--) {
        s += arr[i];
    }
    return s;
}
//方法三:函数式编程
function sumArr(arr) {
    return arr.reduce(function (pre, cur) {
        return pre + cur
    })
}
//方法四:forEach循环
function sum(arr) {
    var s = 0;
    arr.forEach(function (val, idx, arr) {
        s += val;
    }, 0);

    return s;
};
//方法五:eval
function sum(arr) {
    return eval(arr.join("+"));
};
5.数组顺序打乱
//方法一:
function upsetArr(arr) {
    return arr.sort(function () {
        return Math.random() - 0.5
    });
}
//方法二:
var upsetArr = (arr) => {
    let j, _item;
    for (let i = 0; i < arr.length; i++) {
        j = Math.floor(Math.random() * i);
        _item = arr[i];
        arr[i] = arr[j];
        arr[j] = _item;
    }
    return arr;
}
6.数组中随即获取元素
//方法一:
function randomOne(arr) {
    return arr[Math.floor(Math.random() * arr.length)];
}
//方法二:
var randomOne = (arr) => {
    let j, _item;
    for (let i = 0; i < arr.length; i++) {
        j = Math.floor(Math.random() * i);
        _item = arr[i];
        arr[i] = arr[j];
        arr[j] = _item;
    }
    return arr;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值