一、将字符串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) }, []) }