【问题标题】:How can I assign array object properties by using map() function?如何使用 map() 函数分配数组对象属性?
【发布时间】:2019-10-28 04:56:30
【问题描述】:

我有这样的课

export class CompetitionModel{
  id: number;
}

export class Competition{
  competitionNumber: number;
}

和

let  competitions1= [{id:10},{id:20},{id:30}  ];

let  competitions2: Competition[];

我想将CompetitionModel.id 分配给Competition.competitionNumber,但使用map() 而不使用for 或foreach。

我怎样才能成功?

在地图函数的末尾我希望competitions2 等于

[{competitionNumber:10},{competitionNumber:20},{competitionNumber:30}  ];

【问题讨论】:

  • 你为什么想要它? map() 之所以被命名是因为它是 mapping 项目。
  • 我投了反对票,因为这个问题没有显示任何研究工作。
  • @Harun Yılmaz 因为它的性能比 for 更好。我想做这样的matchesApiDates.competitions.map(x => x.competitionNumber) = this.competitions.map(x => x.id);
  • @Narm ahhaa 我相信你对这个问题没有任何答案:)

标签: javascript typescript


【解决方案1】:

我不为此使用地图,但我会在获得示例后立即更新这篇文章。现在:

arr = [{id:123 ... },{id:432},{id:5}]

// finds a single result
theObject = arr.find(obj => obj.id == 5);

// return an array of all matching results
arrayOfResults = arr.filter(obj => obj.name === 'jo');

【讨论】:

  • 这不能回答所提出的问题。他们希望将属性分配给对象集合,而不是按标准过滤。此外,您正在混合 == 和 ===,只需始终使用 ===
  • @Ben Racicot 谢谢,但这不是我的问题的答案
  • 这不是我从问题中读到的。 “将 CompetitionModel.id 分配给 Competition.competitionNumber”,无需循环。还有空的competitions2 数组是干什么用的?
【解决方案2】:

您可以像这样简单地使用map 函数。

competitions2 = competitions1.map(c => ({competitionNumber: c.id}));

Demo

或者……

competitions2 = competitions1.map(c => {
  const comp = new Competition();
  comp.competitionNumber = c.id;
  return comp;
});

Demo

【讨论】:

  • 它在疯狂地工作!!你是打字稿的野兽!非常感谢!!
  • :) 是的。这就是编程的乐趣,对吧?!请记住,如果这对您有用,请upvote 此答案供未来的读者参考,并考虑将其标记为accepted。快乐编码。
猜你喜欢
  • 1970-01-01
  • 2011-09-22
  • 2014-01-16
  • 2016-01-15
  • 2021-11-09
  • 1970-01-01
  • 2012-06-15
  • 2020-04-21
相关资源
最近更新 更多