繁体   English   中英

如何将2个项目推送到数组

[英]How to push 2 items to an array

在这条小提琴线27中示出

var doctors = [
    new Doctor("Doc A","A1"), 
    new Doctor("Doc B","A1"), 
    new Doctor("Doc C","A3")
];

在这里, Doc ADoc BDoc C是硬编码的。 它们也是Knockout绑定:

ko.applyBindings(
    new Patient("idValue", "nameValue", "addressValue", "Female", "usernameValue",
                "passwordValue", "emailValue", "mobileValue", "imgFileValue", 
                "imgSrcValue", "imagePathValue", "useridValue", "A3")
);

无论通过a1a2还是a3选择相应的doc。 例如,我在绑定中传递a3 ,因此我选择了Doc C

鉴于此JSON:

{
  "doctors": [
    {
      "id": 8,
      "schedules": [
        {
          "id": 8,
          "totime": "11:17",
          "dayId": 2,
          "location": "Somajiguda",
          "fromtime": "10:17",
          "hospitalId": 5,
          "day": "Tuesday",
          "hospital": "Yashoda"
        }
      ],
      "username": "d1",
      "degree": "DA(Anaesthesia)",
      "email": "1@2.com",
      "imagePath": "",
      "department": "Bio-Chemistry",
      "name": "d1",
      "userid": 51,
      "gender": "Male",
      "mobile": "1234567900"
    },
    {
      "id": 10,
      "schedules": [
        {
          "id": 10,
          "totime": "12:35",
          "dayId": 2,
          "location": "Somajiguda",
          "fromtime": "11:35",
          "hospitalId": 5,
          "day": "Tuesday",
          "hospital": "Yashoda"
        }
      ],
      "username": "d3",
      "degree": "BDS",
      "email": "d3@d3.com",
      "imagePath": "",
      "department": "Bio-Chemistry",
      "name": "d3",
      "userid": 56,
      "gender": "Male",
      "mobile": "1234567890"
    },
    {
      "id": 1,
      "schedules": [
        {
          "id": 1,
          "totime": "12:55",
          "dayId": 1,
          "location": "Somajiguda",
          "fromtime": "11:55",
          "hospitalId": 5,
          "day": "Monday",
          "hospital": "Yashoda"
        }
      ],
      "username": "doctor",
      "degree": "BDS",
      "email": "",
      "imagePath": null,
      "department": "Critical Care",
      "name": "doctor",
      "userid": 4,
      "gender": "Male",
      "mobile": "1234567890"
    },
    {
      "id": 7,
      "schedules": [
        {
          "id": 7,
          "totime": "11:17",
          "dayId": 2,
          "location": "Somajiguda",
          "fromtime": "11:17",
          "hospitalId": 5,
          "day": "Tuesday",
          "hospital": "Yashoda"
        }
      ],
      "username": "donald",
      "degree": "DA(Anaesthesia)",
      "email": "donald@doctor.com",
      "imagePath": "",
      "department": "Bio-Chemistry",
      "name": "donald",
      "userid": 47,
      "gender": "Male",
      "mobile": "1234567989"
    },
    {
      "id": 6,
      "schedules": [
        {
          "id": 6,
          "totime": "11:15",
          "dayId": 1,
          "location": "Somajiguda",
          "fromtime": "11:15",
          "hospitalId": 5,
          "day": "Monday",
          "hospital": "Yashoda"
        }
      ],
      "username": "john",
      "degree": "BDS",
      "email": "john@john.com",
      "imagePath": null,
      "department": "Anesthesiology",
      "name": "john",
      "userid": 46,
      "gender": "Male",
      "mobile": "1234567890"
    },
    {
      "id": 5,
      "schedules": [
        {
          "id": 5,
          "totime": "13:11",
          "dayId": 2,
          "location": "Somajiguda",
          "fromtime": "12:11",
          "hospitalId": 5,
          "day": "Tuesday",
          "hospital": "Yashoda"
        }
      ],
      "username": "sknayak",
      "degree": "BDS",
      "email": "sknayak@sknayak.com",
      "imagePath": "",
      "department": "Anesthesiology",
      "name": "sknayak",
      "userid": 38,
      "gender": "Male",
      "mobile": "1234567890"
    },
    {
      "id": 2,
      "schedules": [
        {
          "id": 2,
          "totime": "16:26",
          "dayId": 6,
          "location": "Somajiguda",
          "fromtime": "15:26",
          "hospitalId": 5,
          "day": "Saturday",
          "hospital": "Yashoda"
        }
      ],
      "username": "drsukant",
      "degree": "BDS",
      "email": "",
      "imagePath": null,
      "department": "Anesthesiology",
      "name": "sukant",
      "userid": 9,
      "gender": "Male",
      "mobile": "1234567890"
    }
  ]
}

获得GET请求:

$.ajax({
    type: "GET", 
    url: projectUrl+"getDoctors",  
    dataType:"json",
    jsonp: true,
    async:false ,
    success: function (data) {
        $.each(data.doctors, function(index, currPat) {
           console.log(currPat.username);
       });    
    }
});

我想要来自JSON的usernameID代替'Doc A', 'a1''Doc B', 'a2'等...作为var doctors = ...的替代品。

在我的AJAX成功中,我试过:

success: function (data) {
    $.each(data.doctors, function(index, currPat) {
        new Doctors(currPat.id,currPat.username);
    });    
}

可能是这样的?

var doctors = [];

$.ajax({
type: "GET", 
url: projectUrl+"getDoctors",  
dataType:"json",
jsonp: true,
async:false ,
success: function (data) {
    $.each(data.doctors, function(index, currPat) {
       doctors.push[currPat.id,currPat.username];
   });    
}
});

你的最终结果应该是这样的:

doctors = [[id1,name1],[id2,name2], ...... [id10,name10]]

或者您也可以使用以下格式:

doctors.push({id:currPat.id,name:currPat.username});

然后你的最终结果应该是这样的:

doctors = [{id:id1,name:name1},{id:id2,name:name2},......,{id:id10,name:name10}]

*我个人更喜欢格式2

编辑使用JQuery, .map()

var doctors;

$.ajax({
type: "GET", 
url: projectUrl+"getDoctors",  
dataType:"json",
jsonp: true,
async:false ,
success: function (data) {
    doctors = $.map(function () {
    return [data.id,data.username];}).get();    
}
});

比上面提到的稍微短一点。

看起来jQuery.map()可以做你需要的......

success: function (data) {
    doctors = $.map(data.doctors, function(doctor) {
        new Doctor(doctor.id, doctor.username);
    });    
}

的jsfiddle

考虑你的Doctor功能如下:

// Doctor constructor with name and username properties
var Doctor = function(nameParam, usernameParam){
    this.name = nameParam;
    this.username = usernameParam;
};

然后在AJAX成功函数填充所有收到的医生,如:

$.each(jsonStr.doctors, function(index, currPat) {
     var doc = new Doctor(currPat.name,currPat.username);
     doctors.push(doc);
 });
alert(JSON.stringify(doctors));

工作小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM