数组工具类

该工具类有两个方法:

1、isContained方法用来判断一个数组中是否包含另一个数组中所有的数据

2、arrayDiff方法用来删除一个数组中与另一个数组中值相同的元素

arrUtil.js文件

/**
 *
 * key存在时表示是对象数据,可以不存在时表示是普通数组
 * @type {{isContained: arrUtil.isContained, arrayDiff: arrUtil.arrayDiff}}
 */
const arrUtil = {
    //判断一个数组中是否包含另一个数组中所有的数据
    isContained: function (a, b, key) {
        if (!(a instanceof Array) || !(b instanceof Array)) return false;
        if (a.length < b.length) return false;
        let count = 0;
        let depLng = b.length;
        for (var i = 0; i < depLng; i++) {
            for (var j = 0; j < a.length; j++) {
                if (key) {
                    if (a[j][key] == b[i][key]) {
                        count++;
                        break;
                    }
                } else {
                    if (a[j] == b[i]) {
                        count++;
                        break;
                    }
                }
            }
            if (count === depLng) {
                return true;
            }
        }
        return false;
    },
    //删除一个数组中与另一个数组中的值相同的元素
    arrayDiff: function (a, b, key) {
        for (var i = 0; i < b.length; i++) {
            for (var j = 0; j < a.length; j++) {
                if (key) {
                    if (a[j][key] == b[i][key]) {
                        a.splice(j, 1);
                        j = j - 1;
                    }
                } else {
                    if (a[j] == b[i]) {
                        a.splice(j, 1);
                        j = j - 1;
                    }
                }

            }
        }
        return a;
    }
}
export default arrUtil;

使用方法:

普通数组时:

let a=[1,2,5,6,7,4,8];

let b=[1,3,5];

arrUtil.isContained(a,b) //true;

arrUtil.arrayDiff(a,b) //[2,6,7,4,8];

对象数组时:

let a=[{id:01,name:angle},{id:02,name:lina},{id:03,name:jam}];

let b=[{id:01,name:angle},{id:02,name:lina}];

arrUtil.isContained(a,b,"id") //true;

arrUtil.arrayDiff(a,b,"id") //[{id:03,name:jam}];

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值