获取对象内的数组中的总对象

时间:2016-05-04 11:43:49

标签: javascript arrays object

我正在尝试获取数组中的长度或总对象。 我正在创建一个slickEventData对象并将此对象推送到eventsArray。 所以我最终得到一个包含对象的数组。 我想获得此数组中的slickEventData对象的总量。 当我使用长度我得到错误的号码,我得到钥匙的总数?不是对象。

我的代码

var slickEventData = {}
console.log(event);

slickEventData.module = "slick_module"
slickEventData.eventType = event.type;
slickEventData.leadboxId = "a"//container.getAttribute("data-leadbox-id");
slickEventData.advertId = advertId;
slickEventData.length = "length of event"
slickEventData.time = Date.now();
slickEventData.posted = "postedStatus"
eventsArray.push(slickEventData)

console.log("events Array " + JSON.stringify(eventsArray))
console.log("events Array length " + eventsArray.length)

if (!sessionStorage.events) {
  console.log("no old events found")
  sessionStorage.events = eventsArray;
  console.log(sessionStorage.events);
}

else if (sessionStorage.events) {
  var oldEvents = sessionStorage.events;
  console.log("old events length " + oldEvents.length);
  console.log("updated events array met oldData " + eventsArray);
  alert(JSON.stringify(oldEvents));
  //loop thru old events to add them to current events and add these to the sessionStorage
  //postTrackingData(sessionStorage.events);
}
//sessionStorage.events = eventsArray;// add events to storage
console.log("session = " + (JSON.stringify(sessionStorage)))

这些是我的尝试。我猜它在计算所有键和值以及数组作为对象,当我使用oldEvents.length时返回15个对象。 eventsArray.length返回正确的值。 将此数组添加到sessionStorage.events中会搞砸吗?

我如何查找oldEvents中有多少个对象?

我可能这样做完全错了

编辑:

oldEvents返回[object Object],因此看起来没有多个对象 eventsArray返回[object Object],[object Object]等所以多个对象。

他们应该归还同样吗? 我只是将eventsArray添加到sessionStorage然后检索它

我的目标是在事件发生时继续将事件推送到sessionStorage中,并且不要在刷新之间将事件松散。

1 个答案:

答案 0 :(得分:1)

[object object]是您在对象上调用.toString()时获得的内容。

您无法在devtools中扩展字符串。我会采取你做一些无意识的类型转换的角度。

sessionStorage.events = eventsArrayoldEvents = sessionStorage.events对我来说很可疑。

LocalStorage和SessionStorage只接受字符串的键值对。它不会为您对象进行字符串化,而是调用它们的.toString()。我相信问题是你没有将字符串化的数组存储到SessionStorage中,所以当你把它拿出来的时候不是数组而是字符串,你的字符串是.length

我可以建议这些改变:

//Setting storage items
sessionStorage.setItem('events', JSON.stringify(eventsArray));

//reading storage items
JSON.parse(sessionStorage.getItem('events'));

编辑:虽然这可能不是直接回答这个问题,但它仍然(我相信)有价值的信息,而且在评论中无法解释。