我能';t似乎无法更新对象的值';javascript/typescript中数组中的s字段?
这看起来非常简单,但我似乎无法更新数组中WorkSetTemplate对象中pos字段的值 代码如下:我能';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
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;i log(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 }
// ]