🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

Q&A

解決済

4回答

734閲覧

javascript特定keyのvalueを確認する方法

Kimsehwa

総合スコア312

JavaScript

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

0グッド

0クリップ

投稿2019/11/08 03:54

route = { params: { p1: "xxx", p2: undefined, p3: "xxx", p4: "xxxx" } };

このようなobjectの中で
特定のkeyの値にundefinedが含まれてればfalseを返すロジック作りたいですが
objectから特定のkeyだけ取り出して値を確認する方法がよくわかりませんでした。。

途中まで書いたコードはこちらです。

const test = (target, obj) => { return target.some(s => { console.log("hhhh", s); console.log("hhhh22", Object.values(obj)); }); }; console.log(test(["p1", "p2"], route.params));

ヒントになるキーワードがありましたら教えていただけますでしょうか。

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

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

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

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

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

guest

回答4

0

再帰処理がしたい?

javascript

1var route = { 2 params: { 3 p1: "xxx1", 4 p2: undefined, 5 p3: "xxx1", 6 p4: "xxx1", 7 }, 8 params2: { 9 p1: "xxx2", 10 p2: "xxx2", 11 p3: "xxx2", 12 p4: undefined, 13 }, 14 params3: { 15 p1: "xxx3", 16 p2: "xxx3", 17 params4:[ 18 "xxx4", 19 undefined, 20 "xxx4", 21 ], 22 }, 23}; 24function getAllValues(x){ 25 var ret=[]; 26 Object.entries(x).forEach(y=>{ 27 if(y[1] instanceof Object){ 28 ret=ret.concat(getAllValues(y[1])); 29 }else{ 30 ret.push(y[1]); 31 } 32 }); 33 return ret; 34} 35console.log(getAllValues(route).indexOf(undefined)>-1);

特定のkey

特定のkeyの部分がぬけてました

javascript

1var route = { 2 params: { 3 p1: "xxx1", 4 p2: undefined, 5 p3: "xxx1", 6 p4: "xxx1", 7 }, 8 params2: { 9 p1: "xxx2", 10 p2: "xxx2", 11 p3: "xxx2", 12 p4: null, 13 }, 14 params3: { 15 p1: "xxx3", 16 p2: "xxx3", 17 params4:[ 18 "xxx4", 19 undefined, 20 "xxx4", 21 ], 22 }, 23}; 24 25const checkUndefined=(arr,obj)=>getAllValues(obj).filter(x=>arr.indexOf(x[0])>-1).map(x=>x[1]).indexOf(undefined)>-1; 26const getAllValues=x=>{ 27 var ret=[]; 28 Object.entries(x).forEach(y=>{ 29 if(y[1] instanceof Object){ 30 ret=ret.concat(getAllValues(y[1])); 31 }else{ 32 ret.push(y); 33 } 34 }); 35 return ret; 36}; 37console.log(checkUndefined(["p1"],route)); //false 38console.log(checkUndefined(["p2"],route)); //true 39console.log(checkUndefined(["p1","p2"],route)); //true 40console.log(checkUndefined(["p99"],route)); //false

投稿2019/11/08 04:29

編集2019/11/08 04:55
yambejp

総合スコア116694

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

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

0

ベストアンサー

route.params から p2 というキーの値を取り出すやり方は、

javascript

1route.params.p2

の他にも

javascript

1route.params["p2"]

というやり方もあります。コードを見る限り、たぶん後者のやり方を知りたかったのかなという気がします。

投稿2019/11/08 04:27

2KOH

総合スコア999

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

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

0

objectから特定のkeyだけ取り出して

キーを取り出すならObject.keys() です。

【Object.keys() - JavaScript | MDN】
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

どういうオブジェクトがわからない場合、再帰的に辿る必要があるとは思います。

投稿2019/11/08 04:14

kei344

総合スコア69596

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

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

0

単純に、route.params.p2のように参照すればいいかと思います。

…これではなにか足りないでしょうか。

投稿2019/11/08 04:13

maisumakun

総合スコア145975

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問