填坑填坑

填一下坑!!!


关于let和var 先看两组代码:

if (false) {
    var i = 0;
}
alert(i);//undefind 

if (false) {
    let i = 0;
}
alert(i);// Uncaught ReferenceError: i is not defined

关于深克隆

我在这再写一遍的原因就是觉得挂的遗憾!!!

function deepClone(arr) {
    let result = (arr instanceof Array) ? [] : {};
    for (let i in arr) {
        result[i] = (typeof  arr[i] === 'object') ? deepClone(arr[i]) : arr[i];
    }
    return result
}

//test
let arr = [1, 2, 3, {1: 'weiqiujaun', 2: "liuxiaotian", 3: 'wangxiaohan'}, [4, 5, 6]];
deepClone(arr);// [ 1,2,3,{ '1': 'weiqiujaun', '2': 'liuxiaotian', '3': 'wangxiaohan' },[ 4, 5, 6 ] ]

字符串包含

先用这个吧,明天kmp算法实现补上去。

 function isContain(str1, str2) {
    if (str1.indexOf(str2) === -1) {
        return false;
    } else {
        return true;
    }
}

let str1 = 'weiqiujuan';
let str2 = 'qiujuan';
console.log(isContain(str1, str2));//true 

数组的判断

let log = console.log.bind(console);
let arr = [];
//1.es5中的isArray方法

log(Array.isArray(arr));

//2.在任何值上调用Object原生的toString()方法,都会返回一个[Object nativeConstructorName]格式的字符串
function isArray(value) {
    return Object.prototype.toString.call(value) === '[object Array]'
}

log(isArray(arr));

//也可以用此方法来检测函数,正则表达式,原生js对象
function isFunction(value) {
    return Object.prototype.toString.call(value) === '[object Function]'
}

log(isFunction(isArray));

//object的toString方法不能检测非原生构造函数的构造函数名

//3.如果arr和Array存在于同个全局作用域,我们也可以用instanceof判断
log(arr instanceof Array);

//4.typeof判断,用它判断Regexp可能会出问题。
log(typeof RegExp === 'function');

驼峰形式的字符串与下划线形式字符串转换

//驼峰转下划线
let str='weiQiuJuan';
str=str.replace(/([A-Z])/g,"_$1").toLowerCase();
console.log(str);//wei_qiu_juan

//下划线转驼峰
let result = str.split('_');
let newStr = result[0];
for (let i = 1; i < result.length; i++) {
    newStr=newStr + result[i].slice(0, 1).toUpperCase() + result[i].slice(1);
}
console.log(newStr);//weiQiuJuan

猜你喜欢

转载自blog.csdn.net/qq_39083004/article/details/82155021