我在一个对象中有一个对象,我想将内部对象转换为字符串分隔的逗号,但它会生成无限循环
在可观察的http请求之后以这种方式获取数据
this._categoryService.getChecklistCategories()
.subscribe(
res => {
this.categories = res;
let newitem:string[];
for(var i=0; i<res.length; i++){
this.categories.map((category, i) => category.no = i+1);
var obj = res[i].assigned; //an obect.
console.log(obj[0]); //get the first index
}
})
上面的console.log(obj [0])生成
我想创建一个truck_subtype字符串并将其附加到this.categories
我试过以下
res => {
this.categories = res;
let newitem:string[];
for(var i=0; i<res.length; i++){
this.categories.map((category, i) => category.no = i+1);//this adds no i,2,3...
var obj = res[i].assigned; //array item
let stringArray: Array<any> = [];
for(var i=0; i<obj.length; i++){
stringArray.push(obj[i].truck_subtype);
}
this.categories.map((category, i) => category.assigned= stringArray)
}
}
上面会生成无限循环,无法将数组字符串添加到this.categories
我错在哪里
答案 0 :(得分:0)
可能是被声明四次的i变量(在for和在地图中),我认为你的索引永远不会到达res.length
,因为当你使用map时你会重新签名。
尝试将i
的内部地图更改为其他名称,例如i2
...,并测试它以查看循环是否消失。
res => {
this.categories = res;
let newitem:string[];
for(var i=0; i<res.length; i++){
this.categories.map((category, i2) => category.no = i+1);//this adds no i,2,3...
var obj = res[i].assigned; //array item
let stringArray: Array<any> = [];
for(var i3 =0; i<obj.length; i++){
stringArray.push(obj[i3].truck_subtype);
}
this.categories.map((category, i4) => category.assigned= stringArray)
}
}