JavaScript: объектный цикл - PullRequest
0 голосов
/ 01 мая 2019

Мне нужно зациклить массив объектов JavaScript

Это мой объект response:

{
 "kind": "calendar#events",
 "etag": "\"p3288namrojte20g\"",
 "summary": "pedicura",
 "updated": "2019-05-01T14:25:51.642Z",
 "timeZone": "America/Argentina/Cordoba",
 "accessRole": "owner",
 "defaultReminders": [
  {
   "method": "popup",
   "minutes": 30
  }
 ],
 "nextSyncToken": "CJCLqtvE-uECEJCLqtvE-uECGAU=",
 "items": [
  {
   "kind": "calendar#event",
   "etag": "\"3113441344690000\"",
   "id": "hb6me2h********1dun5rs10",
   "status": "confirmed",
   "htmlLink": "https://www.google.com/calendar/event?eid=aGI2bWUyaGFvaGtqbWI4bXYxZHVuNXJzMTAgZTYyMXJtMD********Zw",
   "created": "2019-05-01T14:12:08.000Z",
   "updated": "2019-05-01T14:24:32.345Z",
   "summary": "Prueba de: Pedicura en sala 2-x",
   "description": "x-prueba de añadir masajes en sala 2 y notificar al manicura y a otra persona, fernanda?",
   "creator": {
    "email": "guit----@gmail.com"
   },
   "organizer": {
    "email": "e---s90vak@group.calendar.google.com",
    "displayName": "pedicura",
    "self": true
   },
   "start": {
    "dateTime": "2019-05-08T21:00:00-03:00",
    "timeZone": "America/Argentina/Buenos_Aires"
   },
   "end": {
    "dateTime": "2019-05-08T23:00:00-03:00",
    "timeZone": "America/Argentina/Buenos_Aires"
   },
   "iCalUID": "hb6me2ha----s10@google.com",
   "sequence": 2,
   "attendees": [
    {
     "email": "aleja----it@gmail.com",
     "responseStatus": "needsAction"
    },
    {
     "email": "j----d@gmail.com",
     "responseStatus": "needsAction"
    }
   ],
   "reminders": {
    "useDefault": true
   }
  },
  {
   "kind": "calendar#event",
   "etag": "\"3113441378884000\"",
   "id": "tv**0nbhkt**47la0k",
   "status": "confirmed",
   "htmlLink": "https://www.google.com/calendar/event?eid=dHZmOTQwbmJoa3Q3cnJvYjJsMW00N2xhMGsgZTYyMXJtM*****",
   "created": "2019-05-01T14:18:53.000Z",
   "updated": "2019-05-01T14:24:49.442Z",
   "summary": "Prueba de: Pedicura en sala 2-x",
   "description": "x-prueba de añadir masajes en sala 2 y notificar al manicura y a otra persona, fernanda?",
   "creator": {
    "email": "guit----@gmail.com"
   },
   "organizer": {
    "email": "e---s90vak@group.calendar.google.com",
    "displayName": "pedicura",
    "self": true
   },
   "start": {
    "dateTime": "2019-05-07T21:00:00-03:00",
    "timeZone": "America/Argentina/Buenos_Aires"
   },
   "end": {
    "dateTime": "2019-05-07T23:00:00-03:00",
    "timeZone": "America/Argentina/Buenos_Aires"
   },
   "iCalUID": "tvf940nbhk----m47la0k@google.com",
   "sequence": 2,
   "attendees": [
    {
     "email": "ale---it@gmail.com",
     "responseStatus": "needsAction"
    },
    {
     "email": "j--d@gmail.com",
     "responseStatus": "needsAction"
    }
   ],
   "reminders": {
    "useDefault": true
   }
  },
  {
   "kind": "calendar#event",
   "etag": "\"3113441503284000\"",
   "id": "tqhje1kd*****0",
   "status": "confirmed",
   "htmlLink": "https://www.google.com/calendar/event?eid=dHFoamUxa2Q0MG51M2Q3cGd2b2xlOGRqODAgZTYyMX*****",
   "created": "2019-05-01T14:25:51.000Z",
   "updated": "2019-05-01T14:25:51.642Z",
   "summary": "Prueba de",
   "description": "x-prueba de añadir masajes en sala 2 y notificar al manicura y a otra persona, fernanda?",
   "creator": {
    "email": "guit----@gmail.com"
   },
   "organizer": {
    "email": "e---s90vak@group.calendar.google.com",
    "displayName": "prueba",
    "self": true
   },
   "start": {
    "dateTime": "2019-04-26T21:00:00-03:00",
    "timeZone": "America/Argentina/Buenos_Aires"
   },
   "end": {
    "dateTime": "2019-04-26T23:00:00-03:00",
    "timeZone": "America/Argentina/Buenos_Aires"
   },
   "iCalUID": "tqh*****7pgvole8dj80@google.com",
   "sequence": 0,
   "attendees": [
    {
     "email": "-it@gmail.com",
     "responseStatus": "needsAction"
    },
    {
     "email": "-aud@gmail.com",
     "responseStatus": "needsAction"
    }
   ],
   "reminders": {
    "useDefault": true
   }
  }
 ]
}

и я хочу сделать что-то вроде этого:

var dataStr = JSON.stringify(response);
var dataPrs = JSON.parse(dataStr);
var dataList = JSON.stringify(dataPrs.items);
dataStr = JSON.stringify(dataList);
dataPrs = JSON.parse(dataStr);
dataListPrs.forEach( console.log(dataPrs.htmlLink) );

1 Ответ

2 голосов
/ 01 мая 2019

Вам не нужно делать JSON.stringify и JSON.parse каждый раз.

Вам нужно JSON.stringify, только если вы хотите преобразовать объект Javascript в строку JSON

и JSON.parse толькоесли вы хотите преобразовать строку JSON в объект Javascript и получить доступ к ее значениям с помощью ключа.

Итак, все, что вам нужно:

const data = {
 "kind": "calendar#events",
 "etag": "\"p3288namrojte20g\"",
 "summary": "pedicura",
 "updated": "2019-05-01T14:25:51.642Z",
 "timeZone": "America/Argentina/Cordoba",
 "accessRole": "owner",
 "defaultReminders": [
  {
   "method": "popup",
   "minutes": 30
  }
 ],
 "nextSyncToken": "CJCLqtvE-uECEJCLqtvE-uECGAU=",
 "items": [
  {
   "kind": "calendar#event",
   "etag": "\"3113441344690000\"",
   "id": "hb6me2h********1dun5rs10",
   "status": "confirmed",
   "htmlLink": "https://www.google.com/calendar/event?eid=aGI2bWUyaGFvaGtqbWI4bXYxZHVuNXJzMTAgZTYyMXJtMD********Zw",
   "created": "2019-05-01T14:12:08.000Z",
   "updated": "2019-05-01T14:24:32.345Z",
   "summary": "Prueba de: Pedicura en sala 2-x",
   "description": "x-prueba de añadir masajes en sala 2 y notificar al manicura y a otra persona, fernanda?",
   "creator": {
    "email": "guit----@gmail.com"
   },
   "organizer": {
    "email": "e---s90vak@group.calendar.google.com",
    "displayName": "pedicura",
    "self": true
   },
   "start": {
    "dateTime": "2019-05-08T21:00:00-03:00",
    "timeZone": "America/Argentina/Buenos_Aires"
   },
   "end": {
    "dateTime": "2019-05-08T23:00:00-03:00",
    "timeZone": "America/Argentina/Buenos_Aires"
   },
   "iCalUID": "hb6me2ha----s10@google.com",
   "sequence": 2,
   "attendees": [
    {
     "email": "aleja----it@gmail.com",
     "responseStatus": "needsAction"
    },
    {
     "email": "j----d@gmail.com",
     "responseStatus": "needsAction"
    }
   ],
   "reminders": {
    "useDefault": true
   }
  },
  {
   "kind": "calendar#event",
   "etag": "\"3113441378884000\"",
   "id": "tv**0nbhkt**47la0k",
   "status": "confirmed",
   "htmlLink": "https://www.google.com/calendar/event?eid=dHZmOTQwbmJoa3Q3cnJvYjJsMW00N2xhMGsgZTYyMXJtM*****",
   "created": "2019-05-01T14:18:53.000Z",
   "updated": "2019-05-01T14:24:49.442Z",
   "summary": "Prueba de: Pedicura en sala 2-x",
   "description": "x-prueba de añadir masajes en sala 2 y notificar al manicura y a otra persona, fernanda?",
   "creator": {
    "email": "guit----@gmail.com"
   },
   "organizer": {
    "email": "e---s90vak@group.calendar.google.com",
    "displayName": "pedicura",
    "self": true
   },
   "start": {
    "dateTime": "2019-05-07T21:00:00-03:00",
    "timeZone": "America/Argentina/Buenos_Aires"
   },
   "end": {
    "dateTime": "2019-05-07T23:00:00-03:00",
    "timeZone": "America/Argentina/Buenos_Aires"
   },
   "iCalUID": "tvf940nbhk----m47la0k@google.com",
   "sequence": 2,
   "attendees": [
    {
     "email": "ale---it@gmail.com",
     "responseStatus": "needsAction"
    },
    {
     "email": "j--d@gmail.com",
     "responseStatus": "needsAction"
    }
   ],
   "reminders": {
    "useDefault": true
   }
  },
  {
   "kind": "calendar#event",
   "etag": "\"3113441503284000\"",
   "id": "tqhje1kd*****0",
   "status": "confirmed",
   "htmlLink": "https://www.google.com/calendar/event?eid=dHFoamUxa2Q0MG51M2Q3cGd2b2xlOGRqODAgZTYyMX*****",
   "created": "2019-05-01T14:25:51.000Z",
   "updated": "2019-05-01T14:25:51.642Z",
   "summary": "Prueba de",
   "description": "x-prueba de añadir masajes en sala 2 y notificar al manicura y a otra persona, fernanda?",
   "creator": {
    "email": "guit----@gmail.com"
   },
   "organizer": {
    "email": "e---s90vak@group.calendar.google.com",
    "displayName": "prueba",
    "self": true
   },
   "start": {
    "dateTime": "2019-04-26T21:00:00-03:00",
    "timeZone": "America/Argentina/Buenos_Aires"
   },
   "end": {
    "dateTime": "2019-04-26T23:00:00-03:00",
    "timeZone": "America/Argentina/Buenos_Aires"
   },
   "iCalUID": "tqh*****7pgvole8dj80@google.com",
   "sequence": 0,
   "attendees": [
    {
     "email": "-it@gmail.com",
     "responseStatus": "needsAction"
    },
    {
     "email": "-aud@gmail.com",
     "responseStatus": "needsAction"
    }
   ],
   "reminders": {
    "useDefault": true
   }
  }
 ]
}

const items = data.items

items.forEach(x => console.log(x.htmlLink))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...