我有一个JavaScript对象被推送到全局对象。
var storedElement = {
element: currentElement,
parentElement: parentElement,
elementChild: currentChild
}
storedElement正被推送到一个名为的全局数组。 pastLocations = []
我本质上是想保留一个元素的位置历史记录。为此,我想将这些属性存储到全局数组中。如果相同的元素已经存在并且在全局中具有相同的父元素,那么我不想推送,但如果父元素不同则推送。
有没有办法可以在项目中放置一个唯一的键,这样我就可以快速有效地访问对象中的这个元素。目前我目前有几个循环来从对象获取数据,但这是一个实用的方法。理想情况下,我希望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,或者它不包含。