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

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

Patricia Arquette
リリース: 2024-12-20 06:29:13
オリジナル
419 人が閲覧しました

How Can I Safely Check for the Existence of Nested Keys in JavaScript Objects?

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

ネストされた JavaScript オブジェクト内のプロパティの存在を検証することは、特に潜在的な問題に直面した場合に課題となります。 null または未定義の値。この問題に対処するには、リスクがありエラーが発生しやすいプロパティへの直接アクセスに依存するのではなく、段階的なアプローチを採用することを検討してください。

実行可能な解決策の 1 つは、複数のネストされたレベルの存在をテストするカスタマイズされた関数です。 checkNested という上品な名前のこの関数は、最初の引数としてターゲット オブジェクトを受け取り、その後に予期される一連のネストされたプロパティ名を受け取ります。各プロパティの存在を系統的にチェックし、すべて見つかった場合は true を返し、そうでない場合は false を返します。

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;
}
ログイン後にコピー

たとえば、次のオブジェクトが与えられたとします。

var test = {
  level1: {
    level2: {
      level3: 'level3',
    },
  },
};
ログイン後にコピー

期待される値で checkNested を呼び出します。レベルは予想される結果を返します:

checkNested(test, 'level1', 'level2', 'level3'); // true
checkNested(test, 'level1', 'level2', 'foo'); // 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);
}
ログイン後にコピー

さらに、ネストされたプロパティの存在を単にテストするのではなく、ネストされたプロパティの値を取得することが目的の場合、より簡単なアプローチは次のとおりです。利用可能:

function getNested(obj, ...args) {
  return args.reduce((obj, level) => obj && obj[level], obj);
}

const test = {
  level1: {
    level2: {
      level3: 'level3',
    },
  },
};
console.log(getNested(test, 'level1', 'level2', 'level3')); // 'level3'
console.log(getNested(test, 'level1', 'level2', 'level3', 'length')); // 6
console.log(getNested(test, 'level1', 'level2', 'foo')); // undefined
console.log(getNested(test, 'a', 'b')); // undefined
ログイン後にコピー

これらのテクニックを活用することで、ネストされた JavaScript オブジェクトの複雑さを自信を持ってナビゲートでき、堅牢性と信頼性を確保できます。コードの。

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

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