打字稿数组

时间:2018-04-27 17:25:18

标签: javascript typescript

我有这个数组

numbers1: any=[
               { lat: 43.477254, lng: -3.780953 },
               { lat: 43.472739, lng: -3.781039 },
               { lat: 43.472498, lng: -3.780164 },
               { lat: 43.472023, lng: -3.780363 }
              ];

我想动态填充该数组,并以这种方式得到它:

list:any[]=[];

polygon(event){
   this.list = [event.coords.lat, event.coords.lng];
   this.number.push(this.list);}

但是如何使用Array number1的结构设置值?

  

{lat:value,lng:value},

我已经尝试过,但我还没有。顺便说一句,对此我很抱歉。

3 个答案:

答案 0 :(得分:3)

我认为你想要push一个对象,而不是一个数组:

this.list = {
    lat: event.coords.lat,
    lng: event.coords.lng
};

this.number.push(this.list);

答案 1 :(得分:0)

您正在尝试推送数组而不是对象。在上面你有一个名为numbers1的数组,你正在推进数字。使用正确的

试试这个:

list:any={};

polygon(event)
{
   this.list = {lat: event.coords.lat, lng: event.coords.lng};
   this.number.push(this.list);
}

答案 2 :(得分:0)

您的代码引用了3个不同的数组:this.numbers1this.listthis.number。我不清楚这是否是故意的区别,但似乎你想要做的是这样的事情:

// describe what the arrays contain
type Coord = { lat: number; lng: number; }

// define the array of those coords, initialize empty
numbers: Coord[] = [];

polygon(event){
   // push the next coord (this will be type-checked)
   this.numbers.push({ lat: event.coord.lat, lng: event.coord.lng });
}

请注意,使用自定义类型Coord而不是any编译器将指导您尝试执行的操作。例如,这将是一个错误:

this.numbers.push([event.coord.lat, event.coord.lng]);

编译错误:

Error:
  Argument of type 'any[]' is not assignable to parameter of type 'Coord'.
    Property 'lat' is missing in type 'any[]'.