将对象转换为angular2打字稿中的数组

时间:2017-02-23 19:27:25

标签: arrays angular typescript

我在一个对象中有一个对象,我想将内部对象转换为字符串分隔的逗号,但它会生成无限循环

在可观察的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])生成

enter image description here

我想创建一个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

我错在哪里

1 个答案:

答案 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)                

  }
}