回答編集履歴
3
テキスト追加
test
CHANGED
@@ -72,4 +72,4 @@
|
|
72
72
|
|
73
73
|
|
74
74
|
|
75
|
-
ただし、このようなJSONにしたときのキーの順番に配慮し
|
75
|
+
ただし、このような、JSONにしたときのキーの順番に配慮したコードを書くよりは、先の回答に書いたように、JSONにしないで判定できればそれに越したことはないと思います。
|
2
テキスト追加
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
テキスト追加
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)
|