AdR*_*ock 2 javascript for-loop javascript-objects
如何循环遍历每个对象的嵌套属性并将它们全部设置为 null?我只需要深入 2 层,因此任何prop作为对象的 s 也需要为空。
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,
}
}
Run Code Online (Sandbox Code Playgroud)
我试过这个,但它进入了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)
Run Code Online (Sandbox Code Playgroud)
我也试过这个,但这会通过外部键的每个字母而不是内部属性
for (obj in objs) {
if (objs.hasOwnProperty(obj)) {
for (key in obj) {
if (obj.hasOwnProperty(key)) {
obj[key] = null;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
由于您只需要去两个级别,您可以循环遍历子对象的键:
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,}}
Object.values(objs).forEach(val => {
for (key in val) val[key] = null
})
console.log(objs)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1064 次 |
| 最近记录: |