是否有更简洁或可读性更强的方法?
var foo={a:111,c:333, somePropertyThatShouldntBeAdded:'xxx'};
var myobj={x:1,y:2,z:3};
if(foo.a){myobj.a=foo.a;}
if(foo.b){myobj.b=foo.b;}
if(foo.c){myobj.c=foo.c;}
编辑。我这样做的原因如下。
var obj={value:this.text,css:{color:'#929292',margin:'1px 0px'}};
if(this.width){obj.css.width=this.width;}
if(this.type){obj.type=this.type;}
if(this.id){obj.id=this.id;}
var input=$('<input/>',obj)
最佳答案
您可以使用简单的基于循环的方法:
var foo={a:111,c:333, somePropertyThatShouldntBeAdded:'xxx'};
var myobj={x:1,y:2,z:3};
['a','b','c'].forEach(function(key) {
if(key in foo) {
myobj[key] = foo[key];
}
});
请注意我是如何使用 in
关键字的。如果属性的值为(例如)false
或 0
,您当前的解决方案将不起作用。
此外,为了获得更好的解决方案,请提供一些背景信息:为什么要有条件地复制属性?也许您可以从一开始就避免这种情况。
关于javascript - 有条件地向 JavaScript 对象添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29867846/