循环javascript对象数组(在另一个对象内)

循环javascript对象数组(在另一个对象内),javascript,arrays,object,Javascript,Arrays,Object,我需要循环一个javascript对象数组 这是我的对象响应: { "kind": "calendar#events", "etag": "\"p3288namrojte20g\"", "summary": "pedicura", "updated": "2019-05-01T14:25:51.642Z", "timeZone": "America/Argentina/Cordoba", "accessRole": "owner", "defaultReminders": [

我需要循环一个javascript对象数组

这是我的对象
响应

{
 "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) );

而且:

cons items = data.items;
items.forEach(x => console.log(x.htmlLink))
var dataStr = JSON.stringify(response);
var dataPrs = JSON.parse(dataStr);
var body = dataPrs.body.items;
console.log("body", body);
const items = response.items;
console.log("items", items);
items.forEach(x => console.log(x.htmlLink));

而且:

cons items = data.items;
items.forEach(x => console.log(x.htmlLink))
var dataStr = JSON.stringify(response);
var dataPrs = JSON.parse(dataStr);
var body = dataPrs.body.items;
console.log("body", body);
const items = response.items;
console.log("items", items);
items.forEach(x => console.log(x.htmlLink));


但是
items
始终是
未定义的

您可以使用
forEach()
从json对象获取htmlinks,如下所示-

let obj={“种类”:“日历事件”,“etag”:“p3288namrojte20g”,“摘要”:“pedicura”,“更新”:“2019-05-01T14:25:51.642Z”,“时区”:“美国/阿根廷/科尔多瓦”,“访问角色”:“所有者”,“默认提醒”:[{“方法”:“弹出”,“分钟”:30}],“下一个语法提示”:“CJCLqtvE uECEJCLqtvE uECGAU=”,“项目”:“种类”:“日历事件”,“etag”:3113441344690000\,“id”:“hb6me2h*******1dun5rs10”,“状态”:“已确认”,“HTMLINK”:”https://www.google.com/calendar/event?eid=aGI2bWUyaGFvaGtqbWI4bXYxZHVuNXJzMTAgZTYyMXJtMD********Zw,“创建”:“2019-05-01T14:12:08.000Z”,“更新”:“2019-05-01T14:24:32.345Z”,“摘要”:“Prueba de:Pedicura en sala 2-x”,“描述”:“x-prueba de añadir masajes en sala 2 y Notificiar al-manicura y a otra persona,fernanda?”,“创建者”:{“电子邮件”:“guit-->@gmail.com”},“组织者”:{“电子邮件”:“e---s90vak@group.calendar.google.com“,”displayName“:”pedicura“,”self“:true}”,开始“{”日期时间“:”2019-05-08T21:00:00-03:00”,“时区“:”美国/阿根廷/布宜诺斯艾利斯“,”结束“{”日期时间“:”2019-05-08T23:00:00-03:00,“时区”:“美国/阿根廷/布宜诺斯艾利斯”},“iCalUID”:“hb6me2ha”----s10@google.com,“顺序”:2,“与会者”:[{“电子邮件”:“aleja”----it@gmail.com,“responseStatus”:“needsAction”},{“email”:“j----d@gmail.com“,“responseStatus”:“needsAction”}],“提醒”:{“useDefault”:true}}},{“种类”:“日历#事件”,“etag”:“3113441378884000”,id:“电视**0nbhkt**47la0k”,“状态:“已确认”,“HTMLINK:”https://www.google.com/calendar/event?eid=dHZmOTQwbmJoa3Q3cnJvYjJsMW00N2xhMGsgZTYyMXJtM*****“,”已创建“:”2019-05-01T14:18:53.000Z“,”已更新“:”2019-05-01T14:24:49.442Z“,”摘要“:”Prueba de:Pedicura en sala 2-x“,”说明“:“x-prueba de añadir masajes en sala 2 y Notificiar al-manicura y a otra persona,fernanda?”,“创建者”:{“电子邮件”:“guit-->@gmail.com”},“组织者”:{“电子邮件”:“e---s90vak@group.calendar.google.com“,”displayName“:”pedicura“,”self“:true}”,开始“{”日期时间“:”2019-05-07T21:00:00-03:00”,“时区“:”美国/阿根廷/布宜诺斯艾利斯“,”结束“{”日期时间“:”2019-05-07T23:00:00-03:00,“时区”:“美国/阿根廷/布宜诺斯艾利斯”},“iCalUID”:“tvf940nbhk”----m47la0k@google.com,“顺序”:2,“与会者”:[{“电子邮件”:“ale”---it@gmail.com,“responseStatus”:“needsAction”},{“email”:“j--d@gmail.com“,“responseStatus”:“needsAction”}],“提醒”:{“useDefault”:true}}},{“种类”:“日历#事件”,“etag”:“\“3113441503284000\”,“id”:“tqhje1kd****0”,“状态”:“已确认”,“HTMLINK”:https://www.google.com/calendar/event?eid=dHFoamUxa2Q0MG51M2Q3cGd2b2xlOGRqODAgZTYyMX*****“创建”:“2019-05-01T14:25:51.000Z”,“更新”:“2019-05-01T14:25:51.642Z”,“摘要”:“Prueba de”,“描述”:“x-Prueba de añadir masajes en sala 2 y Notificiar al-manicura y a otra persona,fernanda?”?“,”创建者“:{”电子邮件“:”guit----@gmail.com“}”,组织者“{”电子邮件“:”e---s90vak@group.calendar.google.com“,”displayName“:”普鲁巴“,”自我“:”真实“,”开始“,”日期时间“,”2019-04-26T21:00:00-03:00“,”时区“,”美国/阿根廷/布宜诺斯艾利斯“,”结束“,”日期时间“:”2019-04-26T23:00:00-03:00“,”时区“,”美国/阿根廷/布宜诺斯艾利斯“,”伊卡洛伊德“:“tqh*****7pgvole8dj80@google.com,“顺序”:0,“与会者”:[{“电子邮件”:”-it@gmail.com,“responseStatus”:“needsAction”},{“email”:-aud@gmail.com“,“responseStatus”:“needsAction”}],“提醒”:{“useDefault”:true}}]}
obj['items'].forEach(myFunction);
函数myFunction(项目、索引){
if(item.hasOwnProperty('htmlink')){
console.log(item.htmlink)
}

}
根据您提供的内容,我希望这些行能够正常工作:

const items = response.items;
console.log("items", items);
items.forEach(x => console.log(x.htmlLink));
当我将
response
设置为您提供的JSON时,它在我的测试中起了作用。因此,我希望
response
不是您认为的代码运行时的样子

const response={“种类”:“日历事件”,“etag”:“p3288namrojte20g”,“摘要”:“pedicura”,“更新”:“2019-05-01T14:25:51.642Z”,“时区”:“美国/阿根廷/科尔多瓦”,“访问角色”:“所有者”,“默认提醒”:[{“方法”:“弹出”,“分钟数”:30}],“下一个Synctoken”:“CJCLqtvE uECEJCLqtvE uECGAU=”,“项目”:“种类”:“日历事件”,“etag”:\“3113441344690000\”,“id”:“hb6me2h*******1dun5rs10”,“状态”:“已确认”,“HTMLINK”:https://www.google.com/calendar/event?eid=aGI2bWUyaGFvaGtqbWI4bXYxZHVuNXJzMTAgZTYyMXJtMD********Zw,“创建”:“2019-05-01T14:12:08.000Z”,“更新”:“2019-05-01T14:24:32.345Z”,“摘要”:“Prueba de:Pedicura en sala 2-x”,“描述”:“x-prueba de añadir masajes en sala 2 y Notificiar al-manicura y a otra persona,fernanda?”,“创建者”:{“电子邮件”:“guit-->@gmail.com”},“组织者”:{“电子邮件”:“e---s90vak@group.calendar.google.com“,”displayName“:”pedicura“,”self“:true}”,开始“{”日期时间“:”2019-05-08T21:00:00-03:00”,“时区“:”美国/阿根廷/布宜诺斯艾利斯“,”结束“{”日期时间“:”2019-05-08T23:00:00-03:00,“时区”:“美国/阿根廷/布宜诺斯艾利斯”},“iCalUID”:“hb6me2ha”----s10@google.com,“顺序”:2,“与会者”:[{“电子邮件”:“aleja”----it@gmail.com,“responseStatus”:“needsAction”},{“email”:“j----d@gmail.com“,“responseStatus”:“needsAction”}],“提醒”:{“useDefault”:true}}},{“种类”:“日历#事件”,“etag”:“3113441378884000”,id:“电视**0nbhkt**47la0k”,“状态:“已确认”,“HTMLINK:”https://www.google.com/calendar/event?eid=dHZmOTQwbmJoa3Q3cnJvYjJsMW00N2xhMGsgZTYyMXJtM*****“,”已创建“:”2019-05-01T14:18:53.000Z“,”已更新“:”2019-05-01T14:24:49.442Z“,”摘要“:”Prueba de:Pedicura en sala 2-x“,”说明“:“x-prueba de añadir masajes en sala 2 y Notificiar al-manicura y a otra persona,fernanda?”,“创建者”:{“电子邮件”:“guit-->@gmail.com”},“组织者”:{“电子邮件”:“e---s90vak@group.calendar.google.com“,”displayName“:”pedicura“,”self“:true}”,start“:{”dateTime“:”2019-05-07T21:00:00-03: