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

标签 javascript arrays object

我正在尝试获取数组内的长度或对象总数。 我正在创建一个 slickEventData 对象并将该对象插入 eventsArray 中。 所以我最终得到一个包含对象的数组。 我想获取该数组内 slickEventData 对象的总数。 当我使用长度时,我得到了错误的数字,我得到了 key 的总数?不是物体。

我的代码

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 中,并且在刷新之间不丢失它们。

最佳答案

[object object] 是在对象上调用 .toString() 时得到的结果。

您无法在开发工具中扩展字符串。我会从你进行一些无意的类型转换的 Angular 来看。

这个 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'));
<小时/>

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

关于javascript - 获取对象内数组中的总对象数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37026829/

相关文章:

javascript - AppleScript 到 Javascript

Javascript:如果两个输入的值为 x 或 y,则显示 .div

javascript - JQuery 和 Google map API 问题

C++ - STL vector 问题

javascript - 如何获取 joi 模式中的所有键?

xml - SVG 图像文件显示 XML 代码而不是图像

javascript - 如何在Compound.JS中自动加载Moment.JS?

javascript - 如何在 javascript 文件中存储包含 á ö ő í 等字母的字符串数组?

python - 用周围的大部分值填充孔 (Python)

c - 在C中读取包含十六进制值的char数组