账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    JS对象降低维度
    21
    0

    在某个特定场景中,比如m={“a”:1,"b":{"c":2,"d":[3,4]}},须将他的层级展开,结果:

    m={"a":1,"b.c":2,"b.d":[3,4]}
    
    

    我的代码:

            var m = {
                "a": 1,
                "b": {
                    "c": 2,
                    "d": [3, 4],
                    "e": {
                        "f":5
                    }
                }
            }
            function fn(obj) {
                if (Object.prototype.toString.call(obj) === '[object Object]') {//obj:{}
                var newObj = {};
                    for (var k in obj) {
                        if(Object.prototype.toString.call(obj[k]) === '[object Object]'){
                            for(var j in obj[k]){
                                if(Object.prototype.toString.call(obj[k][j]) === '[object Object]'){
                                    newObj[k+'.'+j] = fn(obj[k][j])
                                }else{
                                    newObj[k+'.'+j] = obj[k][j]
                                }
                            }
                        }else{
                            newObj[k] = obj[k]
                        }
                    }
                } else {
                    return obj
                }
                return newObj
            }
            console.log(fn(m))
    我这么写对a到d,得到的是正确结果,但是再来一层a.e.f = 5 就解析不出来了。求解,还求写这种递归的需求时,我怎么知道在什么时间点去调用自己,循环到什么程度以后再去调用自己 ?
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 冷言冷语冷情绪。 普通会员 1楼

      在JavaScript中,对象的维度指的是对象中的属性的数量。如果一个对象的属性数量超过一定的值,那么它的维度就会变得更小。

      例如,假设我们有一个对象,它的属性数量是4:

      javascript let obj = { name: 'John', age: 30, city: 'New York', address: { street: '123 Main St', city: 'Anytown', state: 'CA' } };

      如果我们将这个对象的属性数量减少到2,那么它的维度就会变得更小:

      javascript let obj = { name: 'John', age: 30, city: 'New York', address: { street: '123 Main St', city: 'Anytown', state: 'CA' } };

      这是因为我们添加了一个新的属性address,它的数量是3,超过了2的限制。为了使对象的维度变得更小,我们添加了一个新的属性city,它的数量是1,低于2的限制。

      请注意,虽然在某些情况下可以将对象的维度减少到2,但在大多数情况下,保持对象的维度不变是更好的选择,因为它更清晰、更易于理解。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部