我正在尝试用它们的备选对象(特定对象)替换数组元素(通用对象),但原始数组中的对象保持不变。
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);
发布于 2018-12-06 04:00:43
在迭代集合时,无需对其进行修改。只需从map
返回对象即可。
this.Objects = this.Objects.map((signer,index) => new SpecificObject(signer));
发布于 2018-12-06 04:04:38
当您想要返回一个数组时,可以使用Map。你可以只使用forEach来做你想做的事情。但我觉得这样看起来会更好
this.Objects = this.Objects.map(signer => new SpecificObject(signer))
发布于 2018-12-06 04:01:00
您没有正确使用map
。你应该只返回箭头函数中的对象。map
实际上返回新的数组,其中包含通过应用您提供的函数创建的元素。因此,您还必须将结果重新赋值为this.Objects
。
this.Objects = this.Objects.map(signer => {
//convert json generics to js objects
return new SpecificObject(signer);
})
https://stackoverflow.com/questions/53639818
复制相似问题