繁体   English   中英

JavaScript-使用唯一键存储对象?

[英]JavaScript - Storing objects with unique key ?

我有一个JavaScript对象被推送到全局对象。

var storedElement = {
    element: currentElement, 
    parentElement: parentElement,
    elementChild: currentChild
}

storedElement被推到一个名为的全局数组。 pastLocations = []

我实质上是在尝试保留元素去过的位置的历史记录。 为此,我想将这些属性存储到全局数组中。 如果相同的元素已经存在并且在全局中具有相同的父代,那么我不想推送,但是如果父代不同,则推送。

有没有一种方法可以在项目中放置唯一键,以便快速有效地访问对象中的此元素。 目前,我每个循环有几个从对象中获取数据的方法,但这是一种实用的方法。 理想情况下,我希望有1个函数可以推入全局并检索元素。

如果我要为每个对象提供唯一的键,那么仅知道元素,我将如何知道它基于什么键?

[...]在Javascript中,数组存储顺序值,保留其顺序,如果您知道索引,则可以快速访问。

对象或字典{...}将值与键一起存储,但不保留其顺序,如果知道键,则提供快速访问。

如果只需要存储具有不同“父”元素的元素,则可以使用一个对象,将父对象用作键。 如果还需要按顺序浏览它们,那么最好的选择是同时使用数组和对象:

storedElements = []
storedByParent = {}

每种存储的内容取决于您的应用程序要求。 您可以存储对象的副本:

newEl = {element: ..., parent: parentElement, ...}
storedElements.push(newEl)
storedByParent[parentElement] = newEl

或者您可以将索引存储到数组中:

storedElements.push(newEl)
storedByParent[parentElement] = storedElements.length - 1

或者,您可以存储一个简单的布尔值,以仅跟踪您所看到的父母:

storedElements.push(newEl)
storedByParent[parentElement] = true

对象的后一种用法通常称为“集合”,因为它与数学对象相似:即使您调用mySet[12] = true一百次,该集合要么包含元素12,要么不包含元素12。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM