javascript - typescript 数组未定义

标签 javascript arrays json typescript

我有一个函数,可以将多个 JSON 对象保存到“联系人”类型的数组中

getContacts(){
    let self = this;
    $.ajax({
        type: "GET",
        url: "/chat/contacts/",
        dataType:"json",
        success: function(response){
            let obj = response;
            let i = 1;
            let contacts: Contact[] = [];
            for (let key in obj) {
                if (obj.hasOwnProperty(key)) {
                    let val = obj[key];
                    contacts[i].id = val["id"]; //<-- contacts[i] is undefinded
                    contacts[i].partner = val["partnerId"];
                    contacts[i].name = val["name"];
                    contacts[i].type = val["type"];
                    console.log(contacts[i]);
                }
            }
        },
        error: function(jqXHR, textStatus, errorThrown){
            alert(errorThrown);
        }
    });
}

在标记点处显示

contacts[i] is undefinded

我如何初始化数组才能使其工作?

这是Contact类:

class Contact extends BaseModel{
    static CCO_ID = "id";
    static CCO_PARTNER = "partner";
    static CCO_NAME = "name";
    static CCO_TYPE = "type";


    partner: Number;
    name: String;
    type: Number;
}

最佳答案

您首先需要定义 contacts[i] 是一个对象,然后使用它的属性。

还有一件事,你是从索引 1 开始的,在 Javascript 数组中索引是从 0 开始的。请注意这是否不是故意的。

let val = obj[key];
contacts[i] = new Contact(); // <-- Look here
contacts[i].id = val["id"];
contacts[i].partner = val["partnerId"];
contacts[i].name = val["name"];
contacts[i].type = val["type"];
console.log(contacts[i]);

关于javascript - typescript 数组未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45975080/

相关文章:

javascript - 如何动态删除 div 并清除内存,以便我可以使用 jQuery 添加具有相同 ID 但不同内容的新 div?

javascript - 使用 Node.js 从网页中抓取 URL

java - 通过 Jettison 将 Java 对象(不带 @XmlRootElement)编码为 JSON

javascript - 如何找到 json 文件的长度?

java - 如何在struts2中只返回数组而不是json对象

javascript - 创建特定大小的二维数组的最短方法

javascript - 助焊剂/助焊剂 : Updating routes based on state change

javascript - 如何在 jQuery 中删除当前窗口中的所有框架?

sql - 在 where 子句中使用数组函数

php - in_array() 不返回所有结果