我在代码库上工作,烦人的我正在遍历的对象有点杂乱……。
基本上,在我的对象中……我打算找到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元素不会隐藏。所以我认为它不够聪明。
仅当对象包含具有数据的网页浏览量?时,访问“ pageviews
或运行命令的最佳方法是什么? 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();
}
}
}
}
}
您可以使用.filter()函数,该函数将函数作为参数并生成一个新数组,其中仅包含满足您通过的条件的项目:
var interestingSubset = data.filter((item) => item.cart && item.cart.pageviews && item.cart.pageviews.length);
现在,如果您只想查看是否至少有一项符合您的条件,那么您可以这样做:
if (interestingSubset.length) {
//Remove item from DOM or do whatever you need to do
}