js数组&& 正则

let arr = [1,3,2,4,5]
let obj = {a:1,b:2,c:3}
        
        function test(){
            for (let key in obj) {
                if (obj[key]===2) {
                    console.log('..update',);
                    
                    // break
                    return 123
                }
                console.log('llll');
            }
            console.log('ffff');
        }
        // test()
        console.log(test());
        //llll
//update
//123

for 中的return会跳出循环并跳出方法
forEach中的return会跳出当前,进行下一次循环

/**
 * 深度对比两个对象是否所有属性值一致
 * @method compare
 * @param origin 对象一
 * @param target 对象二
 * @returns {boolean} 对比结果
 */
function compare(origin, target) {
    //判断参数一是否为object类型
    if (typeof target === 'object') {
        //判断参数二是否不为object类型
        if (typeof origin !== 'object') return false;
        //判断参数一和参数二的属性数量是否一致 Object.keys(target)当target为null时不可以
        if (Object.keys(origin).length !== Object.keys(target).length) return false;
        //遍历参数二的所有键
        for (let key in target)
            //判断参数二的键值和参数一的键值是否一致
            if (!compare(origin[key], target[key])) return false;
        //参数1和参数2对比一致
        return true;
    } else return origin === target;//属性值的对比结果
}
改良版:null === null //true;
function compare(origin, target) {
            if (typeof target === 'object' && target !== null && origin !== null) {
                if (typeof origin !== 'object') return false;
                if (Object.keys(origin).length !== Object.keys(target).length) return false;
                for (let key in target){
                    if (!this.compare(origin[key], target[key])) return false;
                }
                return true;
            } 
            else {
            if(isNaN(target)  && isNaN(origin)&& typeof x === 'number' && typeof y === 'number'){
            	return true
            }
            if(typeof target === 'function' && typeof origin === 'function')){
            	return target.toString().replace(/\s/g, "") == origin.toString().replace(/\s/g, "");
            }
                return origin === target;
            }
        }

var temp1 = {
    a: 0,
    b: 1,
    c: 0
};
var temp2 = {
    a: 0,
    b: 1,
    c: 0
};

console.log(compare(temp1, temp2));

js深浅比较
:深比较,值相同即相同,不看引用关系,eg:{a:1} 和{a:1}同
浅比较:看引用关系

把数组某一项放到最后一项

children.forEach((item, index) => {
                    if (item.id === 'xxx') {
                        children.push(children.splice(index, 1)[0])
                    };
                })
// 二维数组排序
function sortHandler(data, key = 'status') {
    data.children.forEach(item => {
        Array.isArray(item.children) && sortHandler(item)
    })
    data.children.sort((a, b) => {
        return a[key] - b[key]
    })
}

数组遇到的bug [].every()

[].every(t=>t.num >0)//true
[].some(t=> t.num >0)//false
// every、some方法不检测空数组
// every 若收到一个空数组,此方法在一切情况下都会返回 true
//some 如果用一个空数组进行测试,在任何情况下它返回的都是false。

正则字符串转换首字母为大写

str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase())

-转驼峰

var s1 = "foo-style-css";
s1 = s1.replace(//-(/w)/g, function(all, letter){
          return letter.toUpperCase();
        });

驼峰转-

var s = "fooStyleCss";
  s = s.replace(/([A-Z])/g,"-$1").toLowerCase();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值