要存储到数组中的JSON对象

时间:2012-10-03 15:42:55

标签: javascript json

我目前正在尝试将JSON字符串化对象存储到数组中,因此我可以随时添加新元素:

function GetAllPatients(){
var patient = null;
var patients = [];


patient = { "FirstName": "Stephanie", "Gender": "Female", "Id": "P8401", "LastName": "BARRON", "Title": "Ms", "ConsultantId": "d10", "CurrentWardAdmissionName": "Non Admitted", "DOB": "/Date(1187650800000+0100)/", "HospitalAdmissionDate": "/Date(1294848066000+0000)/", "NHSNumber": "4646399561" };


patient = { "FirstName": "Joan", "Gender": "Female", "Id": "50434619", "LastName": "SMITH", "Title": "Mrs", "ConsultantId": "d1", "CurrentWardAdmissionName": "Non Admitted", "DOB": "/Date(513039600000+0100)/", "HospitalAdmissionDate": "/Date(1332242252817+0000)/", "NHSNumber": "9999999999" };

}

还有一个切换案例getPatientFromStore(pid)函数,它将通过pid检索记录

我将如何实现这一目标? 是否有更多信息需要帮助我更接近解决方案?

基本上,我正在创建一个Web应用程序,它将允许脱机状态下的脱机本地存储,并且还与服务器上的数据库同步。

2 个答案:

答案 0 :(得分:3)

您可以使用push

将元素插入数组中

例如:

patients.push({
    "FirstName": "Stephanie",
    "Gender": "Female",
    "Id": "P8401",
    "LastName": "BARRON",
    "Title": "Ms",
    "ConsultantId": "d10",
    "CurrentWardAdmissionName": "Non Admitted",
    "DOB": "/Date(1187650800000+0100)/",
    "HospitalAdmissionDate": "/Date(1294848066000+0000)/",
    "NHSNumber": "4646399561"
});

就id而不是数组而言,最好使用关联数组,如下所示:

var patients = {};
function addPatient(patient) {
    patients[patient.id] = patient;
}

然后在您的方法中,根据患者的身份返回患者,您可以这样做:

function getPatient(id) {
    return patients[id];
}

如果您要一直按照他们的身份查找患者,这很有用。

答案 1 :(得分:0)

您还可以使用多个索引来访问同一位患者。

E.g。如果你想使用NHSNumber和id,你可以在addPatients()函数中执行以下操作:

var patients = { };
var nhsNumberMap = { };
function addPatient(patient) {
    patients[patient.id] = patient;
    nhsNumberMap[patient.NHSNumber] = patient;
}

所以你也可以有另一个功能:

getPatientByNHSNumber(nhsNumber) {
    return nhsNumberMap[nhsNumber];
}