我正尝试用其替代项(特定对象)替换数组元素(通用对象),但原始数组中的对象保持不变。
class SpecificObject{
}
this.Objects = [{},{}];
this.Objects.map((signer,index) => {
//convert json generics to js objects
this.Objects[index] = new SpecificObject(signer);
});
console.log(this.Objects);
不确定代码片段是否正确说明了问题,但我希望看到的是:
[
SpecificObject{},
SpecificObject{}
]
我什至尝试克隆原始对象来进行迭代,但这没有帮助。必须缺少一些愚蠢的东西。有没有办法用lodash实现我所需要的?
编辑(遵循建议提示): 现在,我执行以下操作:
console.log('signers-before', this.Signers);
this.Signers.map(signer => new SigningTableSigner(signer));
console.log('signers-after',this.Signers);
这就是我在日志中得到的(对象仍然保持通用):
Edit2
糟糕,我忘记了作业。 this.Signers =
现在这样,一切都会按预期进行:
console.log('signers-before', this.Signers);
this.Signers = this.Signers.map(signer => new SigningTableSigner(signer));
console.log('signers-after',this.Signers);
答案 0 :(得分:3)
迭代时无需修改集合。只需从map
返回对象即可。
this.Objects = this.Objects.map((signer,index) => new SpecificObject(signer));
答案 1 :(得分:2)
要在要返回数组时使用Map。您可以只使用forEach来完成您想做的事情。但是我认为这样会更好
this.Objects = this.Objects.map(signer => new SpecificObject(signer))
答案 2 :(得分:1)
您没有正确使用map
。您应该只是在箭头函数内返回对象。 map
实际上返回新数组,其中包含通过应用您提供的函数创建的元素。因此,您还必须重新分配this.Objects
的结果。
this.Objects = this.Objects.map(signer => {
//convert json generics to js objects
return new SpecificObject(signer);
})