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

时间:2016-09-13 08:35:08

标签: javascript jquery for-loop key

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

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

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

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

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

如果我要为每个对象提供一个唯一的键,我怎么会知道它只是知道元素的键是什么?

1 个答案:

答案 0 :(得分:1)

在Javascript中,数组<base href="https://polygit.org/components/"> <script src="webcomponentsjs/webcomponents-lite.min.js"></script> <link rel="import" href="polymer/polymer.html"> <dom-module id='computed-style'> <template> <style> :host { --my-style: red; } .test { color: var(--my-style); } </style> <div class='test' on-tap='getStyle'>Hello</div> </template> </dom-module> <script> Polymer({ is: 'computed-style', getStyle: function() { console.log(this.getComputedStyleValue('--my-style')); } }) </script> <computed-style></computed-style>存储顺序值,保留其顺序,如果您知道索引,则提供快速访问。

对象或字典[...]存储值和密钥,而不保留其顺序,如果您知道密钥,则提供快速访问。

如果您只需要存储具有不同父级&#39;的元素,则可以使用父级作为键来使用对象。如果您还需要按顺序浏览它们,最好的办法是同时使用数组和对象:

{...}

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

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 调用了一百次,该集也是包含元素12,或者它不包含。