我有以下对象,并希望将其中的所有值设置为null,同时保持对象结构
var objs = {
a: {
prop1: {id: null, val: 10},
prop2: true,
prop3: null,
},
b: {
prop1: {id: null, val: 20},
prop2: true,
prop3: null,
},
c: 10
}
结果需要为:
var objs = {
a: {
prop1: {id: null, val: null},
prop2: null,
prop3: null,
},
b: {
prop1: {id: null, val: null},
prop2: null,
prop3: null,
},
c: null
}
该解决方案对我有用,我相信它应该在任何深度都有效。但是,如果有更优雅或更有效的解决方案,请告诉我。
var objs = {
a: {
prop1: {id: null, val: 10},
prop2: true,
prop3: null,
},
b: {
prop1: {id: null, val: 20},
prop2: true,
prop3: null,
},
c: 10
}
function nullTest(val){
for (key in val) {
if(typeof(val[key]) !== 'object') {
val[key] = null;
} else {
val[key] = nullTest(val[key])
}
}
return val
}
console.log(nullTest(objs));
谢谢
Javascript is a functional language, thus instead of iterative for loop its more common to use
map
,reduce
,filter
etc. In this case you can use:函数nullTest(val)
val.reduce((acc,cur)=> val [cur] ==='object'?acc.concat(nullTest(cur)):acc.concat(null)),[])