0
studentsOld: any[] = [
   { id: 1, name : 'test', age: 20 }, 
   { id: 2, name : 'sample', age: 21 }
];
 
studentsNew: any = [];

tmp = 0;
selcatage;
funedit(post) {
  this.tmp = post.name
  this.selcatage = post.age
}

funsave() {
  this.studentsOld.forEach((item, index) => {
    var obj;
    obj = {
      name: item.name,
      age: item.age
    }
    
    this.studentsNew.push(obj)
    this.tmp = 0
    this.fundata()
  });
  
  console.log(JSON.stringify(this.studentsNew))
}

我试过但没有得到实际结果。这是将对象推入新数组的正确方法吗

样本输出:

将 20 的年龄更新id:1为 19 并显示值 19 并且即使在页面刷新后也显示相同的值 19

4

2 回答 2

0

你不需要迭代,但只需要

this.studentsNew = this.studentsOld;

console.log(JSON.stringify(this.studentsNew));

但是如果你想在里面添加一个新数据,你可以通过这种方式添加:

studentsOld: any[] = [
    { id: 1, name : 'test', age: 20 }, 
    { id: 2, name : 'sample', age: 21 }
 ];

 test(){
   this.studentsOld.push({
    id: 3, name : 'sample', age: 33
   })

   console.log("qui", this.studentsOld)
 }
于 2020-12-28T14:50:26.693 回答
0

您可以直接推送到数组,而不是声明为 var obj,如下所示,并将年龄减去 1 以获得预期的输出:

studentsOld: any[] = [
   { id: 1, name : 'test', age: 20 }, 
   { id: 2, name : 'sample', age: 21 }
];
 
studentsNew: any = [];


funsave() {
  this.studentsOld.forEach((item, index) => {        
    this.studentsNew.push(obj)
    this.tmp = 0
    this.fundata({
      name: item.name,
      age: +item.age - 1
    })
  });
  
  console.log(JSON.stringify(this.studentsNew))
}

这使工作。谢谢!

于 2021-10-11T17:45:52.053 回答