【发布时间】:2020-07-04 20:58:26
【问题描述】:
我正在编写一个代码库,令人讨厌的是,我正在遍历的对象有点混乱......
基本上,在我的对象中...我打算找到 pageviews 节点,但前提是它包含数据数组...
以下是数据示例:
data = [
{
event: "click",
dimension: 123,
cart: {
pageviews:[]
}
},
{
event: "scroll",
dimension: 456,
cart: {
pageviews:[]
}
},
{
event: "onload",
dimension: 789,
},
{
event: "click",
dimension: 'xyz',
cart: {
pageviews:[
{data: 1},
{data: 2},
{data: 3},
]
}
}
];
如您所见,该对象包含 3 次“综合浏览量”的引用。
在下面的代码中,如果 pageviews 包含数据数组,我想隐藏一个 DOM 元素。
但是,我的 DOM 元素并没有隐藏。所以我认为它不够聪明。
只有当对象包含带有数据的页面浏览量时,才能访问“页面浏览量或运行命令的最佳方式是什么?
let searchURL = new URLSearchParams(location.search);
if (searchURL.has("a" && "b" && "c"))
// Loop through data obj to find which object
for (let index = 0; index < data.length; index++) {
const dataNode = data[index];
// Check if loop contains node contains "cart"
if (dataNode.hasOwnProperty("cart")) {
// Check if "pageview" node exists
if (dataNode.cart.hasOwnProperty("pageview")) {
let resultsResponse = dataNode.cart.pageview;
if (resultsResponse.length >= 1) {
// THEN HIDE DOM ELEMENT
const bigBlockContainer = document.querySelector('.big-container');
bigBlockContainer.remove();
}
}
}
}
}
【问题讨论】:
-
您能否添加一个包含示例 HTML 的可测试示例?
-
您可以尝试将所有
if语句合并为一个。 -
@Mr Polywhirl - 我不认为我可以......这是一个企业应用程序......我实际上根本没有在 HTML 中工作。就像我只是删除一个 DOM 元素..
-
在
data上运行过滤器以仅返回带有pageview.length > 0的人开始,然后您只处理相关数据,然后处理您需要做的事情 -
那么,如果(在任何时候)数据中的任何项目具有购物车页面视图大小,请删除该元素?
标签: javascript arrays object for-loop dom