ホームページ > ウェブフロントエンド > jsチュートリアル > ネストされた JavaScript オブジェクト キーの存在を効率的に確認するにはどうすればよいですか?

ネストされた JavaScript オブジェクト キーの存在を効率的に確認するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-19 09:17:10
オリジナル
150 人が閲覧しました

How to Efficiently Check for Nested JavaScript Object Key Existence?

ネストされた JavaScript オブジェクト キーの存在テスト

深くネストされたオブジェクト プロパティの存在を識別するのは困難な場合があります。ドット表記を使用してマルチレベル キーにアクセスしようとすると、中間レベルが未定義または null の場合、エラーが発生する可能性があります。

既存のアプローチ:

1 つの一般的なアプローチ条件文を使用してネストされたオブジェクトの各レベルを手動でチェックし、目的のキーにアクセスする前にすべてのレベルが存在することを確認します。ただし、深くネストされたオブジェクトの場合、この方法は退屈でエラーが発生しやすくなります。

より良いオプション:

より堅牢な解決策は、オブジェクトを再帰的にチェックする関数を作成することです。ネストされたキーの存在。この関数は、オブジェクトと一連のレベル名を引数として受け取り、各レベルを反復処理して、オブジェクトが存在するかどうか、およびその値が未定義または null でないかどうかを検証します。

関数の実装:

ここでは段階的な関数の実装を示します。

function checkNested(obj /*, level1, level2, ... levelN*/) {
  var args = Array.prototype.slice.call(arguments, 1);

  for (var i = 0; i < args.length; i++) {
    if (!obj || !obj.hasOwnProperty(args[i])) {
      return false;
    }
    obj = obj[args[i]];
  }
  return true;
}
ログイン後にコピー

この関数は、指定されたすべての条件が満たされた場合に true を返します。レベルが存在し、そうでない場合は false。

ES6 更新:

ES6 では、再帰と末尾呼び出しの最適化を使用して、この関数のより簡潔なバージョンが可能です:

function checkNested(obj, level,  ...rest) {
  if (obj === undefined) return false
  if (rest.length == 0 && obj.hasOwnProperty(level)) return true
  return checkNested(obj[level], ...rest)
}
ログイン後にコピー

例使用法:

var test = {level1:{level2:{level3:'level3'}} };

checkNested(test, 'level1', 'level2', 'level3'); // true
checkNested(test, 'level1', 'level2', 'foo'); // false
ログイン後にコピー

値の取得 (ES6):

さらに、ネストされたプロパティの値を取得するには、次の 1 行関数を使用できます。なれ使用:

function getNested(obj, ...args) {
  return args.reduce((obj, level) => obj && obj[level], obj)
}
ログイン後にコピー

例:

console.log(getNested(test, 'level1', 'level2', 'level3')); // 'level3'
ログイン後にコピー

以上がネストされた JavaScript オブジェクト キーの存在を効率的に確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート