質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

570閲覧

オブジェクトのプロパティ値変更

hiro_ike

総合スコア48

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/07/14 15:35

javascript学習中です。

"life"をnullに書き換えたいのですが、
下記以外に(もっと効率の良い)書き方がありましたら、
教えていただけると助かります。

Javascript

1incep.real.dream1.dream2.dream3.dream4.dream5.dream6.limbo = null; 2

JavaScript

1const incep = { 2 real: { 3 dream1: { 4 dream2: { 5 dream3: { 6 dream4: { 7 dream5: { 8 dream6: { 9 limbo: "life" 10 } 11 } 12 } 13 } 14 } 15 } 16 } 17} 18

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2021/07/15 00:45

・"life"という文字列を探してnullにするのか ・"limbo"というパラメータを探してnullにするのか ・もしくはその両方か どういう仕様でしょうか?
hiro_ike

2021/07/15 02:28

コメントありがとうございます。 該当のオブジェクトのvalueが変更できれば良いだけなのですが、 自分の書き方が非常に非効率な気がして、 (初心者のため)もっと簡単なやり方がもしあればと思い質問させていただきました。 ご回答いただいたものと合わせて試してみようと思います。
guest

回答1

0

ベストアンサー

再帰的に検索して置き換えるとかでいいんじゃないでしょうか。

javascript

1const deepChange = (obj, targetKey, targetValue) => { 2 if (obj == null) return obj; 3 if (obj[targetKey] !== undefined) { 4 obj[targetKey] = targetValue; 5 } 6 for (let key in obj) { 7 obj[key] = deepChange(obj[key], targetKey, targetValue); 8 } 9 return obj; 10}; 11 12const incep = { 13 real: { 14 dream1: { 15 dream2: { 16 dream3: { 17 dream4: { 18 dream5: { 19 dream6: { 20 limbo: "life" 21 }, 22 } 23 } 24 } 25 } 26 } 27 } 28} 29 30/* incep.real.dream1.dream2.dream3.dream4.dream5.dream6.limbo = null; */ 31console.log(deepChange(incep, 'limbo', null)) 32

投稿2021/07/14 16:04

編集2021/07/15 02:46
k4a

総合スコア983

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiro_ike

2021/07/15 13:55

ご丁寧にありがとうございます。参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問