回答編集履歴

3

テキスト追加

2021/12/06 02:30

投稿

退会済みユーザー
test CHANGED
@@ -72,4 +72,4 @@
72
72
 
73
73
 
74
74
 
75
- ただし、このようなJSONにしたときのキーの順番に配慮しなければならないのであれば、先のJSONにしない判定をすればそれで事足りるのでと思います。
75
+ ただし、このようなJSONにしたときのキーの順番に配慮したコードを書くよりは、先の回答に書いたように、JSONにしない判定できればそれに越したことないと思います。

2

テキスト追加

2021/12/06 02:30

投稿

退会済みユーザー
test CHANGED
@@ -21,3 +21,55 @@
21
21
  ```
22
22
 
23
23
  ???? [サンプル](https://codepen.io/kilesa/pen/YzrwKPj?editors=0010)
24
+
25
+
26
+
27
+ ### 追記
28
+
29
+
30
+
31
+ 質問への追記・修正で、hoshi-takanoriさんがご指摘のとおり、JSON.stringify によって、
32
+
33
+ `{path1: 111,path2: 111}`
34
+
35
+ という(リテラルで書かれて生成された)オブジェクトをJSONにしたときに、
36
+
37
+ `{"path1":111,"path2":111}`
38
+
39
+ というように、キーの並び順がリテラルで書いたのと同じ順で、先に"path1"、後に "path2" という文字列になることを前提として文字列の比較をするのは、たとえ意図した判定ができたとしても、いわば結果オーライなコードといわざるを得ません。
40
+
41
+
42
+
43
+ これを、元のオブジェクトが`{path1: 111,path2: 111}` というリテラルで書かれても、あるいは"path1"と"path2" とを逆にした`{path2: 111,path1: 111}`というリテラルで書かれたものであっても、JSONにしたときに、キーが昇順にソートされた、
44
+
45
+
46
+
47
+ `{"path1":111,"path2":111}`
48
+
49
+
50
+
51
+ を得るには、以下のモジュールを使えばよいです。
52
+
53
+
54
+
55
+ - [json-stable-stringify](https://github.com/substack/json-stable-stringify)
56
+
57
+
58
+
59
+ ```javascript
60
+
61
+ const stringify = require("json-stable-stringify");
62
+
63
+
64
+
65
+ const obj = { path2: 111, path1: 111 };
66
+
67
+ const json = stringify(obj);
68
+
69
+ console.log(json); // => {"path1":111,"path2":111}
70
+
71
+ ```
72
+
73
+
74
+
75
+ ただし、このようなJSONにしたときのキーの順番に配慮しなければならないのであれば、先のJSONにしない判定をすればそれで事足りるのでは?と思います。

1

テキスト追加

2021/12/06 01:52

投稿

退会済みユーザー
test CHANGED
@@ -8,4 +8,16 @@
8
8
 
9
9
  ```
10
10
 
11
- ???? [サンプル](https://codepen.io/kilesa/pen/OJxyKvB)
11
+ ???? [サンプル](https://codepen.io/kilesa/pen/OJxyKvB?editors=0010)
12
+
13
+
14
+
15
+ さはさりながら、JSONにしなくても以下でできます。
16
+
17
+ ```javascript
18
+
19
+ if (path[0].path1 === 111 && path[0].path2 === 111) {
20
+
21
+ ```
22
+
23
+ ???? [サンプル](https://codepen.io/kilesa/pen/YzrwKPj?editors=0010)