Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环遍历对象,其中一些键具有相同的重复名称_Javascript_Arrays_Object_For Loop_Dom - Fatal编程技术网

Javascript 循环遍历对象,其中一些键具有相同的重复名称

Javascript 循环遍历对象,其中一些键具有相同的重复名称,javascript,arrays,object,for-loop,dom,Javascript,Arrays,Object,For Loop,Dom,我在一个代码库上工作,令人恼火的是,我正在遍历的对象有点凌乱 基本上,在我的对象中。。。我打算查找页面浏览量节点,,但前提是它包含一个数据数组 下面是一个数据示例: data = [ { event: "click", dimension: 123, cart: { pageviews:[] } }, { event: "scroll",

我在一个代码库上工作,令人恼火的是,我正在遍历的对象有点凌乱

基本上,在我的对象中。。。我打算查找页面浏览量节点,,但前提是它包含一个数据数组

下面是一个数据示例:

  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},
              ]
          }
      }
  ];
如您所见,该对象包含三次“页面视图”引用

在下面的代码中,如果
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();
                    }
                }
            }
        }
    }
let searchURL=新的URLSearchParams(location.search);
if(searchURL.has(“a”&“b”&“c”))
//循环遍历数据对象以查找哪个对象
for(让index=0;index=1){
//然后隐藏DOM元素
const bigBlockContainer=document.querySelector('.big container');
bigBlockContainer.remove();
}
}
}
}
}
您可以使用函数,该函数将函数作为参数,并生成一个新数组,其中仅包含满足您传递的条件的项:

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
}

你能添加一个包含示例HTML的可测试示例吗?你可以尝试将所有
if
语句组合成一个。@Polywhill先生-我不认为我能…这是一个企业应用程序…我根本不使用HTML。就像我只是删除一个DOM元素一样..在
数据上运行一个过滤器,只返回那些带有
pag的语句eview.length>0
首先,您只处理相关数据,然后处理您需要处理的内容o如果(在任何时候)数据中的任何项目具有购物车页面视图大小,是否删除该元素?