- 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,但在大多数情况下,保持对象的维度不变是更好的选择,因为它更清晰、更易于理解。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
