查找多层数组对象中是否存在某项值(key)

文章讲述了如何通过递归方法检查一个嵌套的数组对象,当找到setcolor属性值为1时,在对象中添加itemStyle和label属性,将其颜色设置为红色。这种方法用于高亮显示与安全漏洞相关的组件。

数组对象结构类似如下:

      ActivityData: {
        name: "flare",
        data: [
          {
            name: "OA 系统",
            children: [
              {
                name: "Spring Boot_1.5.9.RELEASE",
                children: [
                  {
                    name: "引用组件", 
                    setcolor:1,
                    children: [
                      { name: "Logbock_1.11", value: 3938 },
                      { name: "transactions-jms_3.9.3", value: 3812, setcolor:1},
                      {
                        name: "Jackson-databind_2.8.10  漏洞",
                        children: [
                          { name: "CVE-2021-20190", value: 5731,},
                        ],
                      },
                      {
                        name: "Jackson-databind_2.8.10",
                        children: [
                          { name: "CVE-2021-20190", value: 5731, setcolor:1},
                          { name: "CVE-2021-20190", value: 7840, },
                        ],
                      },
                      { name: "transactions-jta_3.9.3", value: 743 },
                      { name: ".......", value: 743 },
                      
                    ],
                  },
                  {
                    name: "源代码",
                    children: [
                      { name: "IpareportContrller.JAVA", value: 3938 },
                      { name: "DataScanActuator.JAVA", value: 6714 },
                      {
                        name: "Jackson-databind_2.8.10",
                        children: [
                          { name: "CNNVD-201905-214", value: 5731, },
                          { name: "CVE-2021-20190", value: 5914,},
                        ],
                      },
                    ],
                  },
                ],
              },
              { name: "其他框架",},
            ],
          },
        ],
      },

查找该数组对象中是否存在setcolor值,若存在则判断值符合条件时,该对象中添加属性

itemStyle: { color: "red"}

这里介绍的是递归方法:

setstyle(data) {
       // 遍历数据中是否存在setcolor值,并且当值==1时;增添itemStyle 
      return data.map((item) => {
        if (item.setcolor && item.setcolor == 1) {
          return {
            ...item,
            // 是否存在childer存在则继续查找下一层级,不存在则返回空值或undefind;
            children: item.children ? this.setstyle(item.children) : undefined,
            // 增加属性
            itemStyle: {
              color: "red",
            },
            label:{
              color:'red'
            }
          };
        }else {
          return {
            ...item,
            children: item.children ? this.setstyle(item.children) : undefined,
          };
        }
      });
    },

    this.setstyle(ActivityData);  // 将数组对象传递到setstyle方法中

小伙伴们还有其他的好办法,可以发出来,一起学习一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值