常用算法总结

2018-05-30  本文已影响16人  会飞的猪l

ES6 简洁算法

// 并集
let union = a.concat(b.filter(v => !a.includes(v))) // [1,2,3,4,5]
// 交集
let intersection = a.filter(v => b.includes(v)) // [2]
// 差集
let difference = a.concat(b).filter(v => a.includes(v) && !b.includes(v)) // [1,3]

JSON按照多个字段去排序

    //按照多个字段排序
    function compare(name, minor) {
        return function(o, p) {
            var a, b;
            if (o && p && typeof o === 'object' && typeof p === 'object') {
                a = o[name];
                b = p[name];
                if (a === b) {
                    return typeof minor === 'function' ? minor(o, p) : 0;
                }
                if (typeof a === typeof b) {
                    return a < b ? -1 : 1;
                }
                return typeof a < typeof b ? -1 : 1;
            } else {
                thro("error");
            }
        }
    }

拿到2个数组的差值

a.filter(key => !b.includes(key))

对比2个JSON数组 拿到MAC_NBR相同的差值

     var resultArrSole = [];
                        for (var i = 0; i < dataArrEndArr.length; i++) {
                            var obj = dataArrEndArr[i];
                            var num = obj.MAC_NBR;
                            var flag = false;
                            for (var j = 0; j < dataArrGroup.length; j++) {
                                var aj = dataArrGroup[j];
                                var n = aj.MAC_NBR;
                                if (n == num) {
                                    flag = true;
                                    break;
                                }
                            }
                            if (!flag) {
                                resultArrSole.push(obj);
                            }
                        }

json中去掉相同的,并且把相同的值的别的属性变成数组。

dataArrGroup = dataArrGroup.map(function(item, index, arr) {
                const i = arr.find(_item => item.group === _item.group);
                if (i !== item) {
                    i.name.push(item.name);
                    i.value.push(item.value);
                    return undefined;
                } else {
                    i.name = [i.name];
                    i.value = [i.value];
                    return i;
                }
            }).filter(item => item !== undefined);

删除JSON指定对象

var array = [
            {
                id : 1,
                flag : 1
            },
            {
                id : 2,
                flag : 2
            },
            {
                id : 3,
                flag : 1
            }
    ];
var result = array.filter(function(item){ return item.flag != 2});
console.log(result);

删除JSON相同字段

    function unique(list) {
        var arr = [];
        for (var i = 0; i < list.length; i++) {
            if (i == 0) arr.push(list[i]);
            b = false;
            if (arr.length > 0 && i > 0) {
                for (var j = 0; j < arr.length; j++) {
                    if (arr[j].COMPANY_NAME == list[i].COMPANY_NAME) {
                        b = true;
                        //break;
                    }
                }
                if (!b) { arr.push(list[i]); }
            }
        }
        return arr;
    }

JS获取JSON对象数组某个属性最大值

 var name_value= [{"name":"闵行区","value":20},{"name":"浦东新区","value":30},{"name":"杨浦区","value":10}]
    var list = new Array();
    for(var i in name_value){
    list.push(name_value[i].value);
    }
    list.sort(function(num1,num2){
    return num1-num2;
    })
    var maxcnt= eval(list[list.length-1]);

删除数组中text一样的

    Array.prototype.removeRepeatAttr = function() {
        var tmp = {},
            b = [],
            a = this;
        for (var i = 0; i < a.length; i++) {
            if (!tmp[a[i].text]) {
                b.push(a[i]);
                tmp[a[i].text] = !0;
            }
        };
        return b;
    }

拿到数组中最大的数和最小的数,算出差值

    var dataArr = [112,2,3,111,4,5,8,4,1];
    function countArr(a){
        return Math.max.apply(Array,a) - Math.min.apply(Array,a);
    }
   console.log(countArr(dataArr));

数组去空字符串 [1,2,"",3,""]

       function  RemoveEmptyArray(arr){
            this.arr=arr;
            var result=[]
            for(var i=0;i<this.arr.length;i++){
                this.arr[i]!=""&&result.push(this.arr[i])
            }
            return result;
        }

数组去除逗号[1,,,2,,,3]

       function  RemoveCommaArray(arr){
            this.arr=arr;
            var result=[]
            for(var i=0;i<this.arr.length;i++){
                this.arr[i]!=undefined&&result.push(this.arr[i])
            }
            return result;
        }

数组去重

Array.from(new Set(arr));

实现随意颜色

    function randomColor() {
        var r = parseInt(Math.random() * 256, 10) + 1;
        var g = parseInt(Math.random() * 256, 10) + 1;
        var b = parseInt(Math.random() * 256, 10) + 1;
        return 'rgb(' + r + ',' + g + ',' + b + ')';
    }
上一篇 下一篇

猜你喜欢

热点阅读