循环访问对象,其中某些键具有相同的名称重复

问题描述 投票:2回答:1

我在代码库上工作,烦人的我正在遍历的对象有点杂乱……。

基本上,在我的对象中……我打算找到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();
                    }
                }
            }
        }
    }
javascript arrays object for-loop dom
1个回答
0
投票

您可以使用.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
}
© www.soinside.com 2019 - 2024. All rights reserved.