Javascript 使用reduce将源对象的可枚举属性扩展到目标对象
我正在开发一个JavaScript函数,它将源对象(一个或多个对象——这很重要)的可枚举属性分配给目标对象。另一项规定是,后续来源覆盖以前来源的属性分配 我确实搜索并阅读了许多类似的问题,但我遇到了一些麻烦,原因有两个。老实说,我已经坚持了三天了 故障点1:提供的样板文件只是Javascript 使用reduce将源对象的可枚举属性扩展到目标对象,javascript,arrays,object,extend,reduce,Javascript,Arrays,Object,Extend,Reduce,我正在开发一个JavaScript函数,它将源对象(一个或多个对象——这很重要)的可枚举属性分配给目标对象。另一项规定是,后续来源覆盖以前来源的属性分配 我确实搜索并阅读了许多类似的问题,但我遇到了一些麻烦,原因有两个。老实说,我已经坚持了三天了 故障点1:提供的样板文件只是函数extend(){}没有参数。我不确定是否要添加参数。我相信这两种方式都可以 问题点2:我可以编写成功地将一个对象扩展到另一个对象的代码,但不能从多个源进行扩展 例如,如果要这样调用函数: extend({'name':
函数extend(){}
没有参数。我不确定是否要添加参数。我相信这两种方式都可以
问题点2:我可以编写成功地将一个对象扩展到另一个对象的代码,但不能从多个源进行扩展
例如,如果要这样调用函数:
extend({'name':'lola'},{'age':9},{'name':'mickey'})代码>
结果应该是{'user':'mickey','age':9}
非常感谢您的指导。为了好玩,让我们发明Object.prototype.concat()
。就这样
Object.prototype.concat=函数(…o){
返回o.reduce((p,c)=>(Object.keys(c).forEach(k=>p[k]=c[k]),p),this);
};
var objects=[{'name':'lola'},{'age':9},{'name':'mickey'}],
reduced={}.concat(…对象);
log(JSON.stringify(reduced))代码>只是为了好玩,让我们发明Object.prototype.concat()
。就这样
Object.prototype.concat=函数(…o){
返回o.reduce((p,c)=>(Object.keys(c).forEach(k=>p[k]=c[k]),p),this);
};
var objects=[{'name':'lola'},{'age':9},{'name':'mickey'}],
reduced={}.concat(…对象);
log(JSON.stringify(reduced))代码>这似乎是一个完美的情况,
这是ES6的一项功能,所以请检查目标浏览器上的支持情况
var objects=[{'name':'lola'},{'age':9},{'name':'mickey'}]
var r=objects.reduce((a,b)=>Object.assign(a,b));
console.log(r)
对于,
这是ES6的一项功能,所以请检查目标浏览器上的支持情况
var objects=[{'name':'lola'},{'age':9},{'name':'mickey'}]
var r=objects.reduce((a,b)=>Object.assign(a,b));
console.log(r)
在第二个代码段中,您甚至不需要空对象,只需执行var r=object.assign(…objects)这样的操作即可
@Redu是的,您可以,但这会修改第一项;可能是个问题,使用新对象更安全;在第二个代码段中,您甚至不需要空对象,只需执行var r=object.assign(…objects)
@Redu是的,您可以,但这会修改第一项;可能是个问题,使用新对象更安全;