Arrays 迭代一种类型的数组,并仅复制另一种类型的数组中的特定项

Arrays 迭代一种类型的数组,并仅复制另一种类型的数组中的特定项,arrays,angular,typescript,Arrays,Angular,Typescript,在typescript中,我有两个数组: interface IFirst{ name: string; age: number } interface ISecond { nickName: string; lastName: string; } myFirstArray: IFirst[]; mySecondArray: ISecond[]; myFirstArray = [ {name: 'tim', age: 20}, {nam

在typescript中,我有两个数组:

interface IFirst{
    name: string;
    age: number
}

interface ISecond {
    nickName: string;
    lastName: string;
}   

myFirstArray: IFirst[];
mySecondArray: ISecond[];

myFirstArray = [
    {name: 'tim', age: 20},
    {name: 'jim', age: 30}
]
我如何迭代myFirstArray并在mySecondArray中将所有名称设置为昵称? 比如:

this.myFirstArray.forEach((element: IFirst) => {
        this.mySecondArray.push({nickName = element.name});
      })

您应该初始化第二个数组:

mySecondArray: ISecond[] = [];
然后推送元素:

this.myFirstArray.forEach((element: IFirst) => {
    this.mySecondArray.push({nickName: element.name, lastName: ''});
})

这里有
mySecondArray
是数组
ISecond
类型。因此,无论何时您想要在其中指定值,您都应该指定对象的两个属性

如下-

this.myFirstArray.map((element: IFirst) => {
  this.mySecondArray.push({nickName = element.name, lastName: ''});
})

您可以使用
map
方法:

this.myFirstArray = [
    {name: 'tim', age: 20},
    {name: 'jim', age: 30}
];
this.mySecondArray = this.myFirstArray.map(({name, age})=> <ISecond><any>{ 
    nickname: name,
    lastName: ''
    });
console.log(this.mySecondArray);
this.myFirstArray=[
{姓名:'tim',年龄:20},
{姓名:“吉姆”,年龄:30}
];
this.mySecondArray=this.myFirstArray.map({name,age})=>{
昵称:姓名,
姓氏:“”
});
log(this.mySecondArray);

如果您只想分配
昵称
,那么您需要在
ISecond
界面中将lastname设置为可选,如
lastname?:字符串
和接口将为

interface ISecond {
  nickName: string;
  lastName?: string;
}
您可以使用方法并将昵称值指定为
myFirstArray
元素名,例如

this.mySecondArray = this.myFirstArray.map((element: IFirst) => {
  return { nickName: element.name };
});

console.log("this.mySecondArray ", this.mySecondArray);
(看看控制台)


好的,谢谢,我理解。这不是我解决这个问题的重点,所以我忘了写它,它结合了
Maniraj Murugan
porgo
答案,真是太好了。我不确定你想要什么。预期的输出是什么?谢谢,就是这样。虽然我使用了map