ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript オブジェクト内のネストされたキーの存在を安全に確認するにはどうすればよいですか?
ネストされた 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 サイトの他の関連記事を参照してください。