gpt4 book ai didi

javascript - typescript 在函数中传递变量

转载 作者:行者123 更新时间:2023-11-30 11:33:09 25 4
gpt4 key购买 nike

Typescript 的新手并试图了解它。

以下是基本上生成三个随机数的代码,我使用它们从 json 中选择随机对象。

    @Injectable()
export class TrackService {
public drawn :number[]=[];

constructor(private http: Http) {


}
public getRandomTrack(): Observable<Track[]> {
this.generateRandomNumbers();
console.log(this.drawn); //this.drawn is available here
return this.http
.get(API_ENDPOINT)
.map(this.extractRandomData);
}



public extractRandomData(res: Response) {
let body = res.json();
console.log(this.drawn); //undefined here

var randomTrack = [];

for(var i=0;i<this.drawn.length; i++){
randomTrack.push(body.results[this.drawn[i]]);
}

return randomTrack;
}


private generateRandomNumbers(){
var available = [];

for (var i = 1; i<= 55; i++) {
available.push(i);
}

for (var i = 0; i <3; i++) {
var random = Math.floor((Math.random() * available.length));
this.drawn.push(available[random]);
available.splice(random, 1);
}

return this.drawn;
}

正如您在 extractRandomData 中看到的,this.drawn 是未定义的,我如何将 this.drawn 传递到该函数以便我可以访问该数组。

请帮忙。

最佳答案

你必须绑定(bind)上下文:

 public getRandomTrack(): Observable<Track[]> {
this.generateRandomNumbers();
console.log(this.drawn); //this.drawn is available here
return this.http
.get(API_ENDPOINT)
.map((v) => { this.extractRandomData(v) });
}

参见 “this” cannot be used in typescript function (Angular) 了解更多详情。

关于javascript - typescript 在函数中传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45524083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com