手写map和手写json

手写map

  Array.prototype.myMap = function (fun, _this) {
            let list = []
            let length = this.length
            let _fun = _this ?  fun.bind(_this) : fun
 
            for (let index = 0; index < length; index++) {
                let res = _fun(this[index], index, this)
                list.push(res)
            }

            return list
        };

        let test = function(value, index, array)  {
            console.log('2次结果',this,value, index, array )  // ==> 2次结果 ['新this'] 循环值 0 ['循环值']
            return value
        }
        
        let myMap = ['循环值'].myMap(test,['新this']);
        let map = ['循环值'].map(test,['新this']);
        console.log({
            myMap, map
        })  
      
}

手写json

let json = {
    name:'名字',
    test:undefined,
    test1:null,
    all:{
        list:[1,2,undefined,{name:'测试'},undefined],
        test:undefined,
        test1:null,
    }
}
const test = (object)=>{
    let res = {};
    if(object === null)return  null;
    if(Array.isArray(object))return object.map(test);
    if(typeof object !== 'object')return object;
    for(const key in object) {
    let value = typeof object[key] === 'object' ? test( object[key]) : object[key];
        res[key] = value;
         
    }
     
    return res

}
let res = test(json)

 
console.log(json.all == res.all) 
console.log(json == res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值