交,差,并集,加减法

来源:互联网 发布:ios ar软件 编辑:程序博客网 时间:2024/04/29 17:08

**

交,差,并集,加减法

**

var crypto = require("crypto");/** *  方法名 :array_remove_repeat *  作  用 :去重 *  @param : *  @return: *  @date  :2016年11月3日 */function array_remove_repeat(a) { //去重    var r = [];    for(var i = 0; i < a.length; i++) {        var flag = true;        var temp = a[i];        for(var j = 0; j < r.length; j++) {            if(temp === r[j]) {                flag = false;                break;            }        }        if(flag) {            r.push(temp);        }    }    return r;};/** *  方法名 :arrayOperation *  作  用 :交集 *  @param : *  @return: *  @date  :2016年11月3日 */exports.arrayOperation = function() {    var len = arguments.length;    var res = [],        commonArr = [],        intersection = [];    for(var i = 0; i < len; i++) {        if(arguments[i].length == 0) {            return intersection;        }        Array.prototype.push.apply(res, uniqueArray(arguments[i]));    }    for(var i = 0; i < res.length; i++) {        var count = 0;        for(var j = i; j < res.length; j++) {            if(res[i] == res[j]) {                count++;            }        }        commonArr.push([res[i], count]);    }    for(var i = 0; i < commonArr.length; i++) {        if(commonArr[i][1] === len) {            intersection.push(commonArr[i][0]);        }    }    return intersection;}function uniqueArray(data) { //去除数组里相同的数    data = data || [];    var a = {};    for(var i = 0; i < data.length; i++) {        var v = data[i];        if(typeof(a[v]) == 'undefined') {            a[v] = 1;        }    };    data.length = 0;    for(var i in a) {        data[data.length] = i;    }    return data;}/** *  方法名 :sum *  作  用 :并集 *  @param : *  @return: *  @date  :2016年11月3日 */exports.sum = function(a, b) { // 并集       return array_remove_repeat(a.concat(b));};/** *  方法名 :set *  作  用 :差集 *  @param : *  @return: *  @author:zkz *  @date  :2016年11月3日 */exports.set = function(arr1, arr2) {        var arr3 = [];        for(var i = 0; i < arr1.length; i++) {            var flag = true;            for(var j = 0; j < arr2.length; j++) {                if(arr2[j] == arr1[i]) {                    flag = false;                }            }            if(flag) {                arr3.push(arr1[i]);            }        }        return arr3;    }    /**     *  方法名 :accAdd     *  作  用 :加法运算     *  @param :     *  @return:     *  @date  :2016年11月3日     */exports.accAdd = function(arg1, arg2) {        if(arg1 < 0) {            var c;            c = arg1;            arg1 = arg2;            arg2 = c;        } else {}        var r1, r2, m, c;        try {            r1 = arg1.toString().split(".")[1].length;        } catch(e) {            r1 = 0;        }        try {            r2 = arg2.toString().split(".")[1].length;        } catch(e) {            r2 = 0;        }        c = Math.abs(r1 - r2);        m = Math.pow(10, Math.max(r1, r2));        if(c > 0) {            var cm = Math.pow(10, c);            if(r1 > r2) {                arg1 = Number(arg1.toString().replace(".", ""));                arg2 = Number(arg2.toString().replace(".", "")) * cm;            } else {                arg1 = Number(arg1.toString().replace(".", "")) * cm;                arg2 = Number(arg2.toString().replace(".", ""));            }        } else {            arg1 = Number(arg1.toString().replace(".", ""));            arg2 = Number(arg2.toString().replace(".", ""));        }        return(arg1 + arg2) / m;    }    /**     *  方法名 :Subtr     *  作  用 :减法运算     *  @param :     *  @return:     *  @date  :2016年11月3日     */exports.Subtr = function(arg1, arg2) { //减法运算    var r1, r2, m, n;    try {        r1 = arg1.toString().split(".")[1].length;    } catch(e) {        r1 = 0;    }    try {        r2 = arg2.toString().split(".")[1].length;    } catch(e) {        r2 = 0;    }    m = Math.pow(10, Math.max(r1, r2));    //last modify by deeka    //动态控制精度长度    n = (r1 >= r2) ? r1 : r2;    return((arg1 * m - arg2 * m) / m).toFixed(n);};
0 0
原创粉丝点击