teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

compareJSONTreeの不具合修正

2021/02/14 02:58

投稿

AT_2nd
AT_2nd

スコア266

answer CHANGED
@@ -2,6 +2,7 @@
2
2
  ```
3
3
  function compareJSONTree(a,b)
4
4
  {
5
+ if( b == undefined )retrn false;//←ここを追加
5
6
  if( typeof(a) != "object" || typeof(b) != "object" )return (typeof(a)=="object") == (typeof(b)=="object");
6
7
  if( Array.isArray(a) != Array.isArray(b) )return false;
7
8
  const keys = Object.keys(a);
@@ -37,4 +38,7 @@
37
38
  .length == 1;
38
39
  });
39
40
  }
40
- ```
41
+ ```
42
+ ※更に追記
43
+ compareJSONTreeで、引数bがundefinedである場合に対応できていない問題に対処しました。
44
+ compareJSONTreeの先頭にif( b == undefined )return false;を追加して下さい。

1

検証2,3について追記

2021/02/14 02:58

投稿

AT_2nd
AT_2nd

スコア266

answer CHANGED
@@ -10,5 +10,31 @@
10
10
  }
11
11
 
12
12
  compareJSONTree(current_search_menus,default_search_menus);
13
+ ```
13
14
 
15
+ ※追記
16
+ 検証2,3についてはこんな感じでしょうか。
17
+ 投げっぱなしになってしまいますが、下記サイトの内容が色々役に立つので、よろしければどうぞ。
18
+ [MDN Array](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array)
19
+ [MDN Object](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object)
20
+ ```javascript
21
+ function check2()
22
+ {
23
+ return Object.values(default_search_menus.search_pages)
24
+ .filter(v=>v===true)
25
+ .length == 1;
26
+ }
27
+
28
+ function check3()
29
+ {
30
+ return ["posts","comments","users"].every(key=>
31
+ {
32
+ return Object.values(default_search_menus.search_filter[key])
33
+ .filter(child=>
34
+ {
35
+ return Object.values(child).filter(v=>v===true).length == 1;
36
+ })
37
+ .length == 1;
38
+ });
39
+ }
14
40
  ```