[解決済み] ドット記法の文字列を使用してオブジェクトの子プロパティにアクセスする [重複].
2022-05-13 18:09:25
質問
非常に簡単なJavaScriptの問題のようですが、もしかしたら正しい検索キーワードを見逃しているだけかもしれません!一時的に行き詰っています。
あるオブジェクトがあるとします
var r = { a:1, b: {b1:11, b2: 99}};
99にアクセスする方法はいくつかあります。
r.b.b2
r['b']['b2']
私が欲しいのは文字列を定義できることです。
var s = "b.b2";
で99にアクセスし
r.s or r[s] //(which of course won't work)
一つの方法は、ドットで文字列を分割し、多分再帰的/反復的にプロパティを取得するそのための関数を書くことです。しかし、より簡単な/より効率的な方法はありますか?ここにあるjQuery APIのうち、何か便利なものがありますか?
どのように解決するには?
少し前に書いた素朴な関数ですが、基本的なオブジェクトのプロパティに対して動作します。
function getDescendantProp(obj, desc) {
var arr = desc.split(".");
while(arr.length && (obj = obj[arr.shift()]));
return obj;
}
console.log(getDescendantProp(r, "b.b2"));
//-> 99
これを拡張してquot;allow"配列インデックスアクセスを行う回答もありますが、この方法ではドット記法で数値インデックスを指定すればよいので、あまり必要ないでしょう。
getDescendantProp({ a: [ 1, 2, 3 ] }, 'a.2');
//-> 3
関連
-
[解決済み] Javascriptで文字列の最後の文字を切り取るにはどうしたらいいですか?
-
[解決済み] JavaScriptでオブジェクトのキー/プロパティの数を効率的にカウントする方法
-
[解決済み] JSON文字列を安全にオブジェクトに変換する
-
[解決済み] JSオブジェクトをJSON文字列に変換する
-
[解決済み] イベントを発生させた要素のIDを取得する
-
[解決済み] JavaScriptオブジェクトのプロパティを一覧表示するには?
-
[解決済み] 変数を使用してオブジェクトのプロパティに動的にアクセスする
-
[解決済み] JavaScriptのプロパティアクセス:ドット記法とブラケット?
-
[解決済み] <noscript> の反対語のHTMLはありますか?
-
[解決済み] selectタグのngModelの変更を検出する方法(Angular 2)?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScript のネストしたオブジェクトや配列に文字列パスでアクセスする
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
-
[解決済み] Typescript流のMongoose...?
-
[解決済み] uint8配列をbase64エンコードされた文字列に変換する方法は?
-
[解決済み] node.js シェルコマンドの実行
-
[解決済み] JavaScriptでクエリ文字列が存在するかどうかを確認するには?
-
[解決済み] JavaScriptのswitch文で厳密な比較を仮定するのは安全ですか?
-
[解決済み] Javascriptでメールを送信する
-
[解決済み] マウスオーバー時のマウスカーソルをアンカーのようなスタイルに変更する