我能';t似乎无法更新对象的值';javascript/typescript中数组中的s字段?

我能';t似乎无法更新对象的值';javascript/typescript中数组中的s字段?,javascript,typescript,Javascript,Typescript,这看起来非常简单,但我似乎无法更新数组中WorkSetTemplate对象中pos字段的值 代码如下: export class WorkSetTemplate { static alignPositionWithDisplay(coll: WorkSetTemplate[]): WorkSetTemplate[] { for (let i = 0; i < coll.length; i++) { coll[i].pos = i + 1; } re

这看起来非常简单,但我似乎无法更新数组中WorkSetTemplate对象中pos字段的值

代码如下:

export class WorkSetTemplate {

  static alignPositionWithDisplay(coll: WorkSetTemplate[]): WorkSetTemplate[] {
    for (let i = 0; i < coll.length; i++) {
      coll[i].pos = i + 1;
    }
    return coll;
  }

  constructor(
    public id?: number,
    public nk?: string,
    public pos?: number,
    public name?: string,
    public maintainerId?: number,
    public airworthinessDirectiveIssueNumber?: string,
    public workItemTemplates?: WorkItemTemplate[]
  ) {}

}
导出类工作集样本{
静态对齐位置与显示(coll:WorkSetTemplate[]):WorkSetTemplate[]{
for(设i=0;i
假设我从布景开始:

我使用以下命令调用静态方法:

集合=工作集样本。对齐位置与显示(集合)

我希望看到相同的对象排列,但pos值按顺序读取为1、2、3(不是2、1、3)


但实际上没有任何更改(即,它们保持为2、1、3,即使在for循环中输入console.log,更改实际发生(在循环中)。因此,当您退出循环时,更改被取消引用。我显然缺少一些非常基本的内容。有人能告诉我我误解了什么吗?

这里的场景缺少一些内容,因为项目可能会更改(有或没有返回值赋值)

接口工作项模板{
名称:字符串;
}
类工作集示例{
静态对齐位置与显示(coll:WorkSetTemplate[]):WorkSetTemplate[]{
for(设i=0;i
使用传输代码的演示:

var WorkSetTemplate=/**@class*/(函数(){
功能工作集模板(id、nk、pos、名称、maintainerId、AirWorthinesDirectiveIssuEnumber、workItemTemplates){
this.id=id;
this.nk=nk;
this.pos=pos;
this.name=名称;
this.maintainerId=maintainerId;
this.airWorthinesDirectiveIssuEnumber=airWorthinesDirectiveIssuEnumber;
this.workItemTemplates=workItemTemplates;
}
WorkSetTemplate.alignPositionWithDisplay=函数(coll){
对于(变量i=0;ilog(JSON.stringify(items))
@我想这就是他想做的,他不想排序,而是用数组+1的
索引值更新
pos
。他说的是
pos
不更新。我看不出有什么错误,你可以生成一个简单的可复制片段。?也可以方便地显示它他的代码你也这么叫。谢谢大家的回复。我也有点困惑。我觉得很难做一个片段,因为我认为可能在后台发生了一些事情。WorkSetTemplate值是从Angular 7反应表单中提取的,所以我想知道是否有一些双向绑定魔法正在进行。我仍在调查。
interface WorkItemTemplate {
    name: string;
}

class WorkSetTemplate {

  static alignPositionWithDisplay(coll: WorkSetTemplate[]): WorkSetTemplate[] {
    for (let i = 0; i < coll.length; i++) {
      coll[i].pos = i + 1;
    }
    return coll;
  }

  constructor(
    public id?: number,
    public nk?: string,
    public pos?: number,
    public name?: string,
    public maintainerId?: number,
    public airworthinessDirectiveIssueNumber?: string,
    public workItemTemplates?: WorkItemTemplate[]
  ) {}

}

let items = [
    new WorkSetTemplate(5, 'ABC3', 1),
    new WorkSetTemplate(5, 'XYZ1', 1),
    new WorkSetTemplate(5, 'ABC1', 1),
];

console.log(JSON.stringify(items));

// [
//   { "id": 5, "nk": "ABC3", "pos": 1 },
//   { "id": 5, "nk": "XYZ1", "pos": 1 },
//   { "id": 5, "nk": "ABC1", "pos": 1 }
// ]

// Side note - the objects are changed regardless of assignment
WorkSetTemplate.alignPositionWithDisplay(items);

console.log(JSON.stringify(items));

// [
//   { "id": 5, "nk": "ABC3", "pos": 1 },
//   { "id": 5, "nk": "XYZ1", "pos": 2 },
//   { "id": 5, "nk": "ABC1", "pos": 3 }
// ]