along.js

平时写代码用到的方法,就给封装了一下。需要的拿走不谢。。。

1.数组去重 并判断一个元素出现的次数
    handle(str){
        let arr=str.split('')
        var newarr=[];
        var obj={};
        for(var i=0;i<arr.length;i++){
            if(!obj[arr[i]]){
                newarr.push(arr[i]);
                obj[arr[i]]=1;
            }else{
                obj[arr[i]]++;
        }
    }
        console.log(obj);//{a: 3, b: 2, c: 1, d: 2, e: 1, …}
    }

2.获取最小与最大时间的方法
    getAll(value1, value2) {
        var arr = [];
        var getDate = function(str) {
            var tempDate = new Date();
            var list = str.split("-");
            tempDate.setFullYear(list[0]);
            tempDate.setMonth(list[1] - 1);
            tempDate.setDate(list[2]);
            return tempDate;
        }
        var date1 = getDate(value1);
        var date2 = getDate(value2);
        if(date1 > date2) {
            var tempDate = date1;
            date1 = date2;
            date2 = tempDate;
        }
        date1.setDate(date1.getDate());
        var dateArr = [];
        var i = 0;
        while(!(date1.getFullYear() === date2.getFullYear() &&
                date1.getMonth() === date2.getMonth() && date1.getDate() === date2
                .getDate())) {
            var dayStr = date1.getDate().toString();
            if(dayStr.length === 1) {
                dayStr = "0" + dayStr;
            }
            dateArr[i] = date1.getFullYear() + "-" + (date1.getMonth() + 1) + "-" +
                dayStr;

            date1.setDate(date1.getDate() + 1);
            i++;
        }
        arr = dateArr;
        arr.push(value2)
        return arr;
    }

3.数组扁平化 
    flat(arr){
        var newArr =[];
        for(var i= 0; i < arr.length; i++){
            if(arr[i] instanceof Array){
                newArr = newArr.concat(this.flat(arr[i]));
            }else{
                newArr.push(arr[i]);
            }
        }
        return newArr;
    }
    
4.时间戳转化成时间格式
    timeFormat(timestamp){
        var time = new Date(timestamp);
        var year = time.getFullYear();
        var month = time.getMonth()+1;
        var date = time.getDate();
        var day=time.getDay();
        return year+'-'+this.add0(month)+'-'+this.add0(date)
    }
    add0(m){return m<10?'0'+m:m }
    
5.星期封装方法 返回星期几
    GetWeek(num){
        let b=num%7;
        switch(b){
            case 1:
                return '周一'
            case 2:
                return '周二'
            case 3:
                return '周三'
            case 4:
                return '周四'
            case 5:
                return '周五'
            case 6:
                return '周六'
            case 0:
                return '周日'
            default:
                console.log('有误')
        }
    }
    
6.取最小值
    Minarr(arr){
        return Math.min(...arr);
    }
    
7.取最大值
    Maxarr(arr){
        return Math.max(...arr);
    }

8.如何用异步解决下面问题?
    function getNextEvent(){
        var event1=getNextKeyboarEvent();
        var event2=getNextTouchEvent();
        return event1 || event2
    }

    function getNextEvent(callback){
        let timer=setInterval(function(){
            let event=getNextKeyboarEvent() || getNextTouchEvent()
            if (event) {
                clearInterval(timer)
                callback(event)
            }
        })
    }

9.冒泡排序:依次对相邻的两个数据进行比较,大的放在后面,小的放在前面
    function Arrp(arr){
            var temp=0;
            for(let i=0;i<arr.length;i++){
                for(let j=i+1;j<arr.length;j++){
                    if(arr[i]>arr[j]){
                        temp=arr[i];
                        arr[i]=arr[j];
                        arr[j]=temp;
                    }
                }
            }
            console.log(arr)
        }

10.选择排序:将第一位的数据与后面的数据依次比较,得到最小值与第一位交换,第二位大的值再一次与后面的数据依次比较,进行排序。
    function ArraySt(arr){
            for(let i=0;i<arr.length-1;i++){
                var min=arr[i];//假设第一位是最小值
                var minIndex=i;//再拿到最小值时的索引
                for(let j=i+1;j<arr.length;j++){
                    if(min>arr[j]){//假设失败 最小值大于了后一位的值
                        min=arr[j];//存储此时的最小值
                        minIndex=j;//存储此时最小值的索引
                    }
                }
                arr[minIndex]=arr[i];//再把第一位的数据放在第二位最小值的位置
                arr[i]=min;//再把最小值放在第一位的位置
            }
            console.log(arr)
        }

11.数组去重
    function Setarr(arr){
        var set = new Set(arr);
        return set;
   }

12.实现数据双向绑定
    <body>
   <div id="app">
       <input type="text" id="txt">
       <p id="show-txt"></p>
   </div>
   <script>
       var obj = {}
       Object.defineProperty(obj, 'txt', {
           get: function () {
               return obj
           },
           set: function (newValue) {
               document.getElementById('txt').value = newValue
               document.getElementById('show-txt').innerHTML = newValue
           }
       })
       document.addEventListener('keyup', function (e) {
           obj.txt = e.target.value
       })
   </script>
</body>

13.将数字金额每三位用逗号分隔
     // * 功能:金额按千位逗号分隔
     // * 参数:s,需要格式化的金额数值. 
     // * 参数:type,判断格式化后的金额是否需要小数位. 
     // * 返回:返回格式化后的数值字符串. 
    formatMoney(s, type) {
        if (/[^0-9]/.test(s))
            return "0.00";
        if (s === null || s === "null" || s === "")
            return "0.00";
        s = s.toString().replace(/^(\d*)$/, "$1.");
        s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
        s = s.replace(".", ",");
        var re = /(\d)(\d{3},)/;
        while (re.test(s))
            s = s.replace(re, "$1,$2");
        s = s.replace(/,(\d\d)$/, ".$1");
        if (type === 0) {
            var a = s.split(".");
            if (a[1] === "00") {
                s = a[0];
            }
        }
        return s;
    }  

14.获取任意两日期内所有的月份
    getMonthBetween(start, end) {
        var result = [];
        var s = start.split("-");
        var e = end.split("-");
        var min = new Date();
        var max = new Date();
        min.setFullYear(s[0], s[1]);
        max.setFullYear(e[0], e[1]);
        var curr = min;
        while(curr <= max) {
            var month = curr.getMonth()+1;
            result.push(curr.getFullYear() + "-" + (month < 10 ? ("0" + month) : month));
            curr.setMonth(month);
        }
        return result;
    }

15.获取日期前天,昨天,今天,明天,后天...
    GetDateStr(AddDayCount) { 
        var dd = new Date(); 
        dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期 
        var y = dd.getFullYear(); 
        var m = dd.getMonth()+1;//获取当前月份的日期 
        var d = dd.getDate(); 
        return y+"-"+m+"-"+d; 
    }
    
16.url地址传递数据截取
    var url="http:item.taobao.com/item.htm?a=1&b=2&c=&d=xxx&e";
    function StrUrl(url){
        let result={};
        let a=url.split("?")[1];
        let b=a.split("&");
        for(let i=0;i<b.length;i++){
            result[b[i].split("=")[0]]=b[i].split("=")[1]
        }
        return result;
    }

 渡人如渡己,渡已,亦是渡当我们被误解时,会花很多时间去辩白。 但没有用,没人愿意听,大家习惯按自己的所闻、理解做出判别,每个人其实都很固执。与其努力且痛苦的试图扭转别人的评判,不如默默承受,给大家多一点时间和空间去了解。而我们省下辩解的功夫,去实现自身更久远的人生价值。其实,渡人如渡己,渡已,亦是渡人。

猜你喜欢

转载自www.cnblogs.com/alongup/p/9255438.html