JavaScript 'Set' 是否适用于 HTMLStyleElement 对象?
Does JavaScript 'Set' work for HTMLStyleElement objects?
在我的网站中,DOM 中有一些重复的 <Style>
元素。我正在尝试使用 JavaScript 中的 Set 对这些元素进行一些重复数据删除。生成非重复元素的代码是这样的:
const CSSCache = new Set<HTMLStyleElement>();
const styles = document.getElementsByTagName('style');
for (let i = 0; i < styles.length; i++) {
CSSCache.add(styles[i] as HTMLStyleElement);
}
我想知道 JavaScript Set 是否能够使这些 HTMLStyleElement 对象具有唯一性。
此外,其中一些元素没有任何内容,例如<style></style>
但他们在 element.sheet.cssRules 中使用 insertRule (https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet/insertRule) 插入了规则。我想知道 Set 是否也适用于这些类型的样式。
集合包含通过 Object.is
算法唯一的值,这与 ===
的工作方式几乎相同。
将页面上的 <style>
个对象分开,无论内容是否 ===
,因此您将使用当前代码获得页面上所有 <style>
的集合。
同样适用于任何 HTMLElement,甚至适用于普通对象。
const set = new Set();
const obj1 = {};
const obj2 = {};
set.add(obj1);
set.add(obj2);
console.log(set.size);
如果你想de-duplicate,你将不得不走另一条路——比如遍历每个样式的规则。
在我的网站中,DOM 中有一些重复的 <Style>
元素。我正在尝试使用 JavaScript 中的 Set 对这些元素进行一些重复数据删除。生成非重复元素的代码是这样的:
const CSSCache = new Set<HTMLStyleElement>();
const styles = document.getElementsByTagName('style');
for (let i = 0; i < styles.length; i++) {
CSSCache.add(styles[i] as HTMLStyleElement);
}
我想知道 JavaScript Set 是否能够使这些 HTMLStyleElement 对象具有唯一性。
此外,其中一些元素没有任何内容,例如<style></style>
但他们在 element.sheet.cssRules 中使用 insertRule (https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet/insertRule) 插入了规则。我想知道 Set 是否也适用于这些类型的样式。
集合包含通过 Object.is
算法唯一的值,这与 ===
的工作方式几乎相同。
将页面上的 <style>
个对象分开,无论内容是否 ===
,因此您将使用当前代码获得页面上所有 <style>
的集合。
同样适用于任何 HTMLElement,甚至适用于普通对象。
const set = new Set();
const obj1 = {};
const obj2 = {};
set.add(obj1);
set.add(obj2);
console.log(set.size);
如果你想de-duplicate,你将不得不走另一条路——比如遍历每个样式的规则。