簡體   English   中英

Array.map()到Class給出了undefined

[英]Array.map() to Class gives undefined on this

我正在嘗試使用數組的map函數將我的數據映射到特定的類。 該項目位於Angular。

所以我這樣做:

me.$http({
    url: me.appConfig.api + `customer/${customer.number}/stock/warehouses`,
    method: 'get'
}).then((r: any) => {
    def.resolve(r.data.map(Warehouse));
}).catch(def.reject);

到目前為止非常基本。 然后在我的Warehouse類中,它看起來像這樣:

export class Warehouse {
    code: string;
    location: string;
    weight: number;
    count: number;
    late: number;

    stock?: Stock[];

    constructor(data?: any) {
        console.debug('test', data);
        this.code = 'test';
        if (data) {
            this.code = data.code;
            this.location = data.location;
            this.weight = data.weight;
            this.count = data.count;
            this.late = data.late;
        }
    }
}

所以只是值的副本,但奇怪的是,它已經在this.code = 'test'上出現錯誤,然后我得到錯誤:

TypeError: Cannot set property 'code' of undefined
    at Warehouse (main.bundle.js:2218:19)
    at Array.map (native)

任何線索為什么會發生這種情況?

樣本數據:

[
  {
    "code": "SQD",
    "location": "35,16161;6,31561",
    "weight": 3200,
    "count": 18,
    "late": 18
  },
  {
    "code": "GQZ",
    "location": "35,16161;6,31561",
    "weight": 321,
    "count": 20,
    "late": 18
  }
]

您似乎將構造函數傳遞給數組映射函數,這可能不是您想要的

def.resolve(r.data.map(Warehouse));

應該是

def.resolve(new Warehouse(r.data));

函數r.data.map(FN)接受一個函數並返回一個數組,該數組來自r.data的每個元素E,並以E作為參數調用該函數,如FN(E)。 請參閱https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM