Неправильная длина массива и элемента массива при сохранении ключа объекта JSON - PullRequest
0 голосов
/ 08 мая 2018

У меня есть API с JSON-массивом ответа объектов, подобного этому

[
   {
     person_id:"12212",
     person_name:"some name",
     deptt : "dept-1"
   },
   { 
     person_id: "12211",
     person_name: "some name 2"
     deptt : "dept-2"
    },

]

Я пытаюсь сохранить значения person_id в массиве, но они не сохраняются правильно, поэтому длина массива неверна.

Так как я использую Chakram, это то, что я сейчас делаю

it('gets person id in array',()=>{
  let array_ids =[];
  let count=0;
    return response.then((api_response)=>{
     for(var i=1;i<api_response.body.length;i++){
       //this is correctly printing the person id of response
       console.log('Person ids are ==>'+api_response.body[i].person_id);
       count++;

       //this is not working
       array_ids = api_response.body[i].person_id;
}
      console.log('Count is '+count) //prints correct number
      console.log('Array length '+array_ids.length) //prints incorrect length - sometimes 11, sometimes 12
});
});

Я хочу знать, почему это происходит?

array_ids = api_response.body[i].person_id 

неправильный способ получения / назначения элементов в массиве?

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Попробуйте, в вашем коде есть исправление. Вы не помещаете идентификаторы в массив, но каждый раз назначаете новое значение идентификаторов.

it('gets person id in array',()=>{
  let array_ids =[];
  let count=0;
    return response.then((api_response)=>{
     for(var i=1;i<api_response.body.length;i++){
       //this is correctly printing the person id of response
       console.log('Person ids are ==>'+api_response.body[i].person_id);
       count++;

       //this is not working
       array_ids.push(api_response.body[i].person_id); //update
}
      console.log('Count is '+count) //prints correct number
      console.log('Array length '+array_ids.length) //prints incorrect length - sometimes 11, sometimes 12
});
});
0 голосов
/ 08 мая 2018

Вам нужно вставить идентификаторы в массив

array_ids.push(api_response.body[i].person_id);

Вы можете использовать Array.prototype.map()

let array_ids = api_response.body.map(obj => obj.person_id);
let count = array_ids.length;
...