js的一些常用小知识(数组的去重、统计重复次数、循环遍历、 js进制转换方法、js操作JSON)

/*用递归的方式计算出1-->100的总值*/
            function sum(num) {
                if(num == 1) {
                    return 1;
                }
                return num + sum(num - 1);
            }
            console.log(sum(100))

统计重复次数的方法:

        function chachong (str){
                   var obj = {};
                   str.sort();
                   for(var i = 0; i < str.length;){
                       var con = 0;
                       for(var j = i; j<str.length; j++){
                           if(str[i] === str[j]){
                               con++
                           }
                       }
                       obj[str[i]]=con;
                       i += con;
                   }
                   console.log(obj);
               }
var a = ['嘿嘿','嘿嘿','哈哈哈','哈哈哈','呼呼呼呼'] chachong(a)

关于数组去重复的几种方法:

  先创建一个数组吧:

    var arr=['12','32','89','12','12','78','12','32'];
  // 最简单数组去重法 function unique1(array){ var n = []; //一个新的临时数组 for(var i = 0; i < array.length; i++){ //遍历当前数组 if (n.indexOf(array[i]) == -1) n.push(array[i]); } console.log(n)//查看数组 return n; } arr=unique1(arr);
//es6方法数组去重
    arr=[...new Set(arr)];
    console.log(arr)
//es6方法数组去重,第二种方法
function dedupe(array) {
  return Array.from(new Set(array));       //Array.from()能把set结构转换为数组
}
console.log(dedupe(arr))
// 速度最快, 占空间最多(空间换时间)
    function unique2(array){
        var n = {}, r = [], type;
        for (var i = 0; i < array.length; i++) {
            type = typeof array[i];
            if (!n[array[i]]) {
                n[array[i]] = [type];
                r.push(array[i]);
            } else if (n[array[i]].indexOf(type) < 0) {
                n[array[i]].push(type);
                r.push(array[i]);
            }
        }
        return r;
    }
   console.log(unique2(arr))
//数组下标判断法
    function unique3(array){
        var n = [array[0]]; //结果数组
        for(var i = 1; i < array.length; i++) { //从第二项开始遍历
            if (array.indexOf(array[i]) == i) 
                n.push(array[i]);
        }
        return n;
    }
    console.log(unique3(arr))

关于js的for循环遍历:

               var str =[{'name':'zs','age':18},{'name':'ls','age':19}               
         console.log(str)
         console.log(
'-----------------------------') console.log('es5:for循环')
         //len=str.length : 将长度存到缓存中去,这样每次循环时,就不会再去读取数组长度
for(var i = 0,len=str.length; i<str.length;i++){ console.log(str[i]) } console.log('-----------------------------') console.log('es6: for循环(in)') for(var i in str){ console.log(str[i]) } console.log('------------------------------') console.log('es6:for循环(of)') for(var i of str){ console.log(i) } 
         console.log('---------------------------------')
         console.log('通过$.each进行循环遍历')
         $.each(str,function(index,item){
         console.log(index+':'+JSON.stringify(item))
         })
         console.log('---------------------------------')
         console.log('通过forEach进行循环遍历')
         str.forEach(function(item,index){
         console.log(index+':'+JSON.stringify(item))
         })
         console.log('---------------------------------')
         console.log('通过map进行循环遍历')
         str.map(function(item,index){
         console.log(index+':'+JSON.stringify(item))
         })
 

 js进制转换方法:

      
      //num:10进制数字, radix:要转换的进制(10进制转成2~36和62进制可以实现)
      function conversion(num, radix) {
if(radix >= 2 && radix <= 36) { return num.toString(radix); } else if(radix == 62) { var chars = '0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ'.split(''), radix = chars.length, qutient = +num, arr = []; do { mod = qutient % radix; qutient = (qutient - mod) / radix; arr.unshift(chars[mod]); } while (qutient); return arr.join(''); } else { console.log('请输入2~36之间的进制数,或者输入62,转成62进制') return null; } }

 js操作JSON:

1.将data转成data2

        var data = [{
                'name': 'zhangsan',
                age: 18
            },
            {
                'name': 'lisi',
                age: 19
            },
            {
                'name': 'wangwu',
                age: 20
            }
        ]            


        var data2 = [
            ['name','age'],
            ['zhangsan',18],
            ['lisi',19],
       ['wangwu',20]
    ]

具体实现:调用format()方法即可;

    function format(arr) {
            var result = [];
            for(var x in arr) {
                var item = [];
                for(var i in arr[x]) {
                    item.push(arr[x][i]);
                }
                result.push(item);
            }
            //Object.keys(arr[arr.length-1]):获取到key值
            result.unshift(Object.keys(arr[arr.length - 1]))
            return result;
        }

 

posted @ 2020-05-26 09:28  大云之下  阅读(665)  评论(0编辑  收藏  举报
大云之下