如何迭代javascript属性,但跳过其中的函数?
我有一个包含属性和方法的对象。我希望遍历它,使其中的每个属性都变为null,并保持函数不变。该对象如下所示:如何迭代javascript属性,但跳过其中的函数?,javascript,Javascript,我有一个包含属性和方法的对象。我希望遍历它,使其中的每个属性都变为null,并保持函数不变。该对象如下所示: let Obj = { prop1: /* somevalue */ prop2: /* somevalue */ /* another properties goes here */ func1: () => { /* do something */ } /* another functions goes here */ } 我可
let Obj = {
prop1: /* somevalue */
prop2: /* somevalue */
/* another properties goes here */
func1: () => {
/* do something */
}
/* another functions goes here */
}
我可以用:
Object.keys(filter).forEach((key, index) => {
/* assign null to properties */
});
对象中的函数是否受到影响?您可以迭代
条目
并检查每个值的类型-如果它不是函数
,则将null
分配给属性:
让Obj={
prop1:‘prop1’,
prop2:‘prop2’,
func1:()=>{
/*做点什么*/
}
}
Object.entries(Obj.forEach)([key,val])=>{
如果(值的类型!=“函数”){
Obj[key]=null;
}
});
控制台日志(Obj)代码>您可以使用typeof
测试它是否是一个函数-如果是,则什么都不要做。如果不是,则为其赋值null
:
让Obj={
prop1:‘prop1’,
prop2:‘prop2’,
func1:()=>{}
}
Object.keys(Obj.forEach)(key=>{
Obj[键]=Obj[键]的类型==“功能”?Obj[键]:空;
});
控制台日志(Obj)
您可以使用循环键并将非函数属性设置为null
let过滤器={
建议一:"一",
建议二:"二",
func1:()=>{}
}
用于(让输入过滤器){
if(过滤器类型[键]!=“功能”)
筛选器[键]=空
}
console.log(过滤器)
在筛选器中,删除具有类型函数的值
让Obj={
建议一:"a",,
/*一些价值*/
建议二:"b",,
/*一些价值*/
/*另一个属性在这里*/
func1:()=>{
/*做点什么*/
返回'ab'
}
/*另一个函数在这里*/
}
Object.keys(Obj).filter(e=>typeof Obj[e]!==“function”).forEach(x=>Obj[x]=null)
console.log(Obj)
是的,伙计,我只是随便玩玩并检查一下。它起作用了。谢谢。为什么有一个对象同时包含方法和未知属性?
filter(e=>typeof e!=='function')