【发布时间】:2019-04-23 03:08:14
【问题描述】:
如何循环遍历每个对象的嵌套属性并将它们全部设置为 null?我只需要深入 2 个级别,因此任何作为对象的 props 也需要为空。
var objs = {
a: {
prop1: {id: null, ctx: CanvasRenderingContext2D},
prop2: true,
prop3: null,
prop4: null,
prop5: true,
prop6: null,
prop7: null,
prop8: true,
prop9: null,
prop10: null,
prop11: true,
},
b: {
prop1: {id: null, ctx: CanvasRenderingContext2D},
prop2: true,
prop3: null,
prop4: null,
prop5: true,
prop6: null,
prop7: null,
prop8: true,
},
c: {
prop1: {id: null, ctx: CanvasRenderingContext2D},
prop2: true,
prop3: null,
prop4: null,
prop5: true,
}
}
我已经尝试过了,但它会进入我不想要的 prop1 对象。
function nullify (obj) {
for(key in obj) {
if (typeof obj[key] == "object") {
obj[key] = nullify(obj[key]);
}
else if(obj[key] != null) {
obj[key] = null;
}
}
return obj;
}
nullify (objs)
我也试过这个,但这会通过外部键的每个字母而不是内部属性
for (obj in objs) {
if (objs.hasOwnProperty(obj)) {
for (key in obj) {
if (obj.hasOwnProperty(key)) {
obj[key] = null;
}
}
}
}
【问题讨论】:
-
数据结构尖叫起来是一个数组而不是嵌套对象。然后你可以用非常基本的语法循环。
标签: javascript for-loop javascript-objects