第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何迭代深層嵌套對(duì)象并查找特定鍵的值?

如何迭代深層嵌套對(duì)象并查找特定鍵的值?

四季花海 2023-06-29 20:50:55
我有一個(gè) Javascript 對(duì)象,如下所示。我想遍歷對(duì)象并找出值Hostnamesconst data ={  "error1": {    "7": [      {        "ErrorType": "Error-1A",        "Hostnames": "host123.com,hostabc.com,host33a.com..."      }    ],    "8": [      {        "ErrorType": "Error-1B",        "Hostnames": "host223.com,host2c.com,host43a.com..."      },      {        "ErrorType": "Error-1C",        "Hostnames": "host1231.com,host2abc.com,host313a.com..."      }    ]  },  "error2": {    "3": [      {        "ErrorType": "Error-2A"        "Hostnames": "host1231.com,host2abc.com,host313a.com..."      },      {        "ErrorType": "Error-2B"        "Hostnames": "host1231.com,host2abc.com,host313a.com..."      }    ],    "8": [      {        "ErrorType": "Error-2C"        "Hostnames": "host1231.com,host2abc.com,host313a.com..."      },      {        "ErrorType": "Error-2D",        "Hostnames": "host1231.com,host2abc.com,host313a.com..."      }    ]  },  "error3": {    "1": [      {        "ErrorType": "Error-3A",        "Hostnames": "host1236.com"      },      {        "ErrorType": "Error-3B",        "Hostnames": "hostc3231.com"      }    ]  }}我寫了以下 NodeJS 函數(shù):const findObjectByLabel = function(obj, label) {    if(obj.label === label) { return obj; }    for(var i in obj) {        if(obj.hasOwnProperty(i)){            var foundLabel = findObjectByLabel(obj[i], label);            if(foundLabel) { return foundLabel; }        }    }    return null;};const hostNames = findObjectByLabel(data, 'Hostnames');console.log(hostNames);上面的函數(shù)拋出錯(cuò)誤:Error: undefined : RangeError: Maximum call stack size exceeded
查看完整描述

2 回答

?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

因此,讓我們刪除無(wú)用的上下文。您想要深入查找對(duì)象中的“主機(jī)名”值。


并且您的遞歸似乎循環(huán),導(dǎo)致超出最大調(diào)用堆棧大小錯(cuò)誤。


怎么才能自己發(fā)現(xiàn)問(wèn)題呢?只需添加 `console.log('ON', obj) 作為 'findObjectByLabel' 函數(shù)的第一行。


您將看到您在“E”上循環(huán)。因?yàn)樵谀承r(shí)候,被測(cè)試的對(duì)象是一個(gè)字符串。


第二個(gè)問(wèn)題:您檢查 .label === 'Hostnames'...json 數(shù)據(jù)中沒(méi)有 'label' 鍵。


修復(fù)此問(wèn)題后的另一個(gè)問(wèn)題是您將停在第一個(gè)主機(jī)名上。


這是一個(gè)解決方案


function deepFind(obj, label, results=[]) {

    if( typeof obj !== 'object' && !!obj )

      return null;


    if( !!obj[label] ) {

      results.push(obj[label]);

    }


    Object.getOwnPropertyNames(obj).forEach( k => {

      deepFind(obj[k], label, results);

    });

}


const results = [];

deepFind(data, 'Hostnames', results);


查看完整回答
反對(duì) 回復(fù) 2023-06-29
?
紅顏莎娜

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊

數(shù)據(jù)結(jié)構(gòu)需要嵌套循環(huán),但這是可行的。這將提供一個(gè)主機(jī)名數(shù)組:“我想遍歷對(duì)象并找出主機(jī)名的值”。


const data = {

  "error1": {

    "7": [{

      "ErrorType": "Error-1A",

      "Hostnames": "host123.com,hostabc.com,host33a.com..."

    }],

    "8": [{

        "ErrorType": "Error-1B",

        "Hostnames": "host223.com,host2c.com,host43a.com..."

      },

      {

        "ErrorType": "Error-1C",

        "Hostnames": "host1231.com,host2abc.com,host313a.com..."

      }

    ]

  },

  "error2": {

    "3": [{

        "ErrorType": "Error-2A",

        "Hostnames": "host1231.com,host2abc.com,host313a.com..."

      },

      {

        "ErrorType": "Error-2B",

        "Hostnames": "host1231.com,host2abc.com,host313a.com..."

      }

    ],

    "8": [{

        "ErrorType": "Error-2C",

        "Hostnames": "host1231.com,host2abc.com,host313a.com..."

      },

      {

        "ErrorType": "Error-2D",

        "Hostnames": "host1231.com,host2abc.com,host313a.com..."

      }

    ]

  },

  "error3": {

    "1": [{

        "ErrorType": "Error-3A",

        "Hostnames": "host1236.com"

      },

      {

        "ErrorType": "Error-3B",

        "Hostnames": "hostc3231.com"

      }

    ]

  }

};


const out = [];

for (let key in data) {

  for (let number in data[key]) {

    data[key][number].map(d => out.push(d.Hostnames));

  }

}


console.log(out);


查看完整回答
反對(duì) 回復(fù) 2023-06-29
  • 2 回答
  • 0 關(guān)注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)