美文网首页
常用算法总结

常用算法总结

作者: 会飞的猪l | 来源:发表于2018-05-30 09:58 被阅读16次

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 + ')';
    }

相关文章

  • 总结几种常用的安全算法

    总结几种常用的安全算法

  • 常用排序算法

    常用的排序算法 在此总结一下常用排序算法的代码实现 #include using namespace std;t...

  • encyption&decyption

    0, 常用加密算法的Java实现(一) ——单向加密算法MD5和SHA 常用加密算法的Java实现总结(二) ...

  • 回溯算法总结

    回溯法学习总结 回溯算法也是算法导论中常用的算法,回溯算法类似于暴力求解算法,经常用在求可能解的问题。下面我将从三...

  • 常用的算法总结

    风控模型常用的算法总结 一、常用算法 监督算法 随机森林采用投票机制,xgb则是弱学习机的集合。随机森林关注方差,...

  • iOS + 常用排序算法

    算练习吧参照的原文常用排序算法总结(一)八大排序算法

  • 常用算法总结

    ES6 简洁算法 JSON按照多个字段去排序 拿到2个数组的差值 对比2个JSON数组 拿到MAC_NBR相同的差...

  • 机器学习常用算法

    机器学习常用算法总结如下:决策树随机森林算法逻辑回归SVM朴素贝叶斯K最近邻算法K均值算法Adaboost 算法神...

  • 排序算法最强总结及其代码实现(Python/Java)

    前言 本文总结了常用的全部排序算法,内容包括: 排序算法的定义和思路 排序算法的代码实现:Python和Java,...

  • 算法学习(1)-排序算法

    八大排序算法九大排序算法再总结[经典排序算法][集锦][直观学习排序算法] 视觉直观感受若干常用排序算法 快速排序...

网友评论

      本文标题:常用算法总结

      本文链接:https://www.haomeiwen.com/subject/ledmrftx.html