zoukankan      html  css  js  c++  java
  • js算法题

    一、将字符串qin_chuang_qin_chuang转为qinChuangQinChuang;

    let arr = str1.split("_");
    let str = arr[0];
    for (let i = 1; i < arr.length; i ++) {
      arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1);
      str += arr[i]
    }

    二、输出啥

    var a = 10;
    function add() {
      var a = 0;
      return function () {
        a += 1;
        console.log(a);
      }
    }
    var a1 = add();
    var a2 = add();
    a1(); // 1
    a2(); // 1
    a1(); // 2
    a2(); // 2

    三、将金额转为千分位

    let num = 12345678.9
    let arr = num.toString().split(".");
    var result="", index = 0, len = arr[0].length-1;
    while(len >= 0) {
      index % 3 === 0 && index !== 0 ? result += "," + arr[0][len] : result += arr[0][len];
      len --;
      index ++;
    };
    result = result.split("").reverse().join("") + "." + arr[1];

     四、判断数组的方式

    //通过原型链做判断
    obj.__proto__ === Array.prototype;
    //通过ES6的Array.isArray()做判断 Array.isArrray(obj);
    //通过instanceof做判断 obj instanceof Array;
    //通过Array.prototype.isPrototypeOf Array.prototype.isPrototypeOf(obj);
    //通过Object.prototype.toString.call()做判断 Object.prototype.toString.call(obj).slice(8, -1) === "Array";

     五、手写reduce实现map

    Array.prototype.Mmap = function (fn, thisArg) {
      const result = [];
      this.reduce((prev, curr, index, array) => {
        result[index] = fn.call(thisArg, array[index], index, array);
      }, 0);
      return result;
    };

    解析:

      arr.reduce((previousValue, currentValue, currentIndex, array) => {}, initialValue?)

        reduce 接收两个参数,第一个参数为函数,指定了每次迭代调用的函数,函数的返回值为下一次迭代的 previousValue;第二个参数为初始值,是可选的。若不指定初始值,那么第一次迭代的 previousValue 为 arr[[0], currentValue 为 arr[1], currentIndex 为 1,若指定初始值,那么第一次迭代的 previousValue 为 initialValue, currentValue 为 arr[0], currentIndex 为 0

    六、css实现一个扇形

    <style>
            .pie {
                position: relative;
                margin: 10px auto;
                padding: 0;
                 320px;
                height: 320px;
                border-radius: 50%;
                list-style: none;
                overflow: hidden;
                border: 1px solid red;
            }
            .slice {
                overflow: hidden;
                position: absolute;
                top: 0; 
                right: 0;
                 50%;
                height: 50%;
                transform-origin: 0% 100%; 
                background-color: black;
            }
            .slice-one {
                transform: rotate(30deg) skewY(-30deg);
                background: black;
            }
            .slice-two {
                transform: rotate(-30deg) skewY(-30deg);
                background: yellow;
            }
            .slice-three {
                transform: rotate(-90deg) skewY(-30deg);
                background: black;
            }
            .slice-four {
                transform: rotate(-150deg) skewY(-30deg);
                background: yellow;
            }
            .slice-five {
                transform: rotate(-210deg) skewY(-30deg);
                background: black;
            }
            .slice-six {
                transform: rotate(-270deg) skewY(-30deg);
                background: yellow;
            }
     </style>
    <!-- 扇形 -->  
        <ul class='pie'>
            <li class='slice-one slice'> </li> 
            <li class='slice-two slice'> </li>
            <li class='slice-three slice'> </li>
            <li class='slice-four slice'> </li>
            <li class='slice-five slice'> </li>
            <li class='slice-six slice'> </li>
        <ul>

     七、数组偏平化

    function flatten(arr){
      return arr.reduce(function(prev, cur){
        return prev.concat(Array.isArray(cur) ? flatten(cur) : cur)
      }, [])
    }
    Talk is cheap,show me the code
  • 相关阅读:
    axios的兼容性
    js中的特殊符号含义
    div垂直居中
    HTTP协议(一):介绍
    HTTP协议(二)header标头说明
    AJAX 状态值(readyState)与状态码(status)详解
    Javascript替代eval方法
    vue基础知识之vue-resource/axios
    ES6的export与Nodejs的module.exports
    PM2来部署nodejs服务器永久开启
  • 原文地址:https://www.cnblogs.com/qc-one/p/15054522.html
Copyright © 2011-2022 走看看