首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >替换Javascript中的数组元素会产生意外的结果

替换Javascript中的数组元素会产生意外的结果
EN

Stack Overflow用户
提问于 2018-12-06 03:56:12
回答 3查看 48关注 0票数 0

我正在尝试用它们的备选对象(特定对象)替换数组元素(通用对象),但原始数组中的对象保持不变。

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);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-12-06 04:00:43

在迭代集合时,无需对其进行修改。只需从map返回对象即可。

this.Objects = this.Objects.map((signer,index) => new SpecificObject(signer));
票数 3
EN

Stack Overflow用户

发布于 2018-12-06 04:04:38

当您想要返回一个数组时,可以使用Map。你可以只使用forEach来做你想做的事情。但我觉得这样看起来会更好

this.Objects = this.Objects.map(signer => new SpecificObject(signer))
票数 2
EN

Stack Overflow用户

发布于 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);
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53639818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档