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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript:當路徑未知時,檢查嵌套對象中是否存在密鑰

JavaScript:當路徑未知時,檢查嵌套對象中是否存在密鑰

DIEA 2019-04-18 18:15:28
我正在嘗試檢查我的對象中是否存在密鑰。我不知道密鑰可以在哪個或哪個嵌套對象上具體,我只知道密鑰(或?qū)傩裕┑拿Q。擁有一個允許快速搜索對象并確定對象中是否存在屬性鍵的函數(shù)對我來說非常方便。為了說明這一點,我的模擬對象將是這樣的:const testObject = {   one : {     two : {       three : "hello"     }   }}我希望找到一個密鑰存在的函數(shù)將返回或true的屬性密鑰,并返回密鑰"three""one"false"fooBar"我嘗試過該hasOwnProperty方法,但失敗了。
查看完整描述

3 回答

?
Helenr

TA貢獻1780條經(jīng)驗 獲得超4個贊

一種方法是使用遞歸搜索函數(shù)doesObjectHaveNestedKey(),如下所示(這不需要額外的依賴,如lodash):


const object = {

  some : {

    nested : {

      property : {

        to : [

          {

            find : {

              foo : [ 1 , 2 , 3 ]

            }

          }

        ]

      }

    }

  }

}


/* Define function to recursively search for existence of key in obj */

function doesObjectHaveNestedKey(obj, key) {

  

  for(const k of Object.keys(obj)) {

  

    if(k === key) {

      /* Search keys of obj for match and return true if match found */

      return true

    }

    else {

      const val = obj[k];

      

      /* If k not a match, try to search it's value. We can search through

      object value types, seeing they are capable of containing

      objects with keys that might be a match */

      if(typeof val === 'object') {

      

        /* Recursivly search for nested key match in nested val */

        if(doesObjectHaveNestedKey(val, key) === true) {

          return true;

        }

      }

    }

  }

  

  return false;

}


console.log('has foo?', doesObjectHaveNestedKey(object, 'foo') )    // True

console.log('has bar?', doesObjectHaveNestedKey(object, 'bar') )    // False

console.log('has nested?', doesObjectHaveNestedKey(object, 'nested') ) // True

這里的想法是:

  1. 通過輸入對象“obj”的鍵查找與輸入“key”匹配的鍵“k”

  2. 如果找到匹配則返回true,否則返回true

  3. 查找能夠存儲嵌套對象的“obj”的任何值“val”(探索“對象”類型,因為只有這些可以存儲嵌套鍵)和

  4. 以遞歸方式搜索這些類型的“val”以獲得匹配,如果找到,則返回true


查看完整回答
反對 回復 2019-05-17
?
子衿沉夜

TA貢獻1828條經(jīng)驗 獲得超3個贊

Dacre Denny的答案也可以寫成:

  const hasKey = (obj, key) => 
    Object.keys(obj).includes(key) ||
    Object.values(obj)
      .filter(it => typeof it === "object")
      .some(it => hasKey(it, key));


查看完整回答
反對 回復 2019-05-17
  • 3 回答
  • 0 關注
  • 422 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號