【问题标题】:How can I get items in data array with recursive?如何使用递归获取数据数组中的项目?
【发布时间】:2021-10-27 22:53:05
【问题描述】:

我有一个数据数组

var data=[{
"key": "KUZEY",
"items": [
    {
        "key": "MARMARA",
        "items": [
            {
                "key": "T100",
                "items": [
                    {
                        "Ref": 1,
                        "ApprovedReserveQuantity": 1
                       
                    }
                ]
            }
        ]
    },
    {
        "key": "MARMARA 2",
        "items": [
            {
                "key": "T100",
                "items": [
                    {
                        "Ref": 2,
                        "ApprovedReserveQuantity": 1
                        
                   }
                ]
            }
        ]
    }
] }]

我想在我调用函数时获取项目。那个recursiveMethod怎么做?

groupedItems=recursiveMethod(数据)

groupedItems==>[{"Ref": 1,"ApprovedReserveQuantity": 1},{"Ref": 2,"ApprovedReserveQuantity": 1}]

【问题讨论】:

  • 你想提取/解压最里面的“项目”吗?
  • @emreozgun10 是的,我想要最里面的“项目”
  • 您可以从上面提供的链接@pilchard 中找到该功能。我正在准备一个(我的提取每个值,不匹配 'key' )需要重构。
  • 我正在审查它。

标签: javascript recursive-datastructures


【解决方案1】:
groupedItems:any[]=[];    
recursiveMethod(element){
          if(element.items==null)
            this.groupedItems.push(element)
          if (element.items != null){
              let i;
              for(i=0;  i < element.items.length; i++){
                    this.recursiveMethod(element.items[i]);
              }
         }
    }

成功了

【讨论】:

    【解决方案2】:

    在您的答案中找不到任何“关键”检查。 即使我不完全信任我的功能,并且对它为什么起作用感到困惑,但如果您对其进行调整/调整,它还是可以重复使用的。

    const extractInnermostByKey = (data, targetKey, res = []) => {
        data.forEach((obj) => {
            for (let key of Object.keys(obj)) {
                if (key === targetKey) {
                    // console.log(res);  observe res
                    res.shift();
                    res.push(...obj[key]);
                    return extractInnermostByKey(res, targetKey, res);
                }
            }
        });
        return res;
    };
    
    const groupedItems = extractInnermostByKey(data, 'items');
    
    console.log(groupedItems);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 2016-08-17
      • 2017-12-15
      • 2012-08-13
      • 1970-01-01
      • 2023-02-26
      • 1970-01-01
      相关资源
      最近更新 更多