回答編集履歴
3
テキスト追加
answer
CHANGED
@@ -35,4 +35,4 @@
|
|
35
35
|
console.log(json); // => {"path1":111,"path2":111}
|
36
36
|
```
|
37
37
|
|
38
|
-
ただし、このようなJSONにしたときのキーの順番に配慮し
|
38
|
+
ただし、このような、JSONにしたときのキーの順番に配慮したコードを書くよりは、先の回答に書いたように、JSONにしないで判定できればそれに越したことはないと思います。
|
2
テキスト追加
answer
CHANGED
@@ -9,4 +9,30 @@
|
|
9
9
|
```javascript
|
10
10
|
if (path[0].path1 === 111 && path[0].path2 === 111) {
|
11
11
|
```
|
12
|
-
???? [サンプル](https://codepen.io/kilesa/pen/YzrwKPj?editors=0010)
|
12
|
+
???? [サンプル](https://codepen.io/kilesa/pen/YzrwKPj?editors=0010)
|
13
|
+
|
14
|
+
### 追記
|
15
|
+
|
16
|
+
質問への追記・修正で、hoshi-takanoriさんがご指摘のとおり、JSON.stringify によって、
|
17
|
+
`{path1: 111,path2: 111}`
|
18
|
+
という(リテラルで書かれて生成された)オブジェクトをJSONにしたときに、
|
19
|
+
`{"path1":111,"path2":111}`
|
20
|
+
というように、キーの並び順がリテラルで書いたのと同じ順で、先に"path1"、後に "path2" という文字列になることを前提として文字列の比較をするのは、たとえ意図した判定ができたとしても、いわば結果オーライなコードといわざるを得ません。
|
21
|
+
|
22
|
+
これを、元のオブジェクトが`{path1: 111,path2: 111}` というリテラルで書かれても、あるいは"path1"と"path2" とを逆にした`{path2: 111,path1: 111}`というリテラルで書かれたものであっても、JSONにしたときに、キーが昇順にソートされた、
|
23
|
+
|
24
|
+
`{"path1":111,"path2":111}`
|
25
|
+
|
26
|
+
を得るには、以下のモジュールを使えばよいです。
|
27
|
+
|
28
|
+
- [json-stable-stringify](https://github.com/substack/json-stable-stringify)
|
29
|
+
|
30
|
+
```javascript
|
31
|
+
const stringify = require("json-stable-stringify");
|
32
|
+
|
33
|
+
const obj = { path2: 111, path1: 111 };
|
34
|
+
const json = stringify(obj);
|
35
|
+
console.log(json); // => {"path1":111,"path2":111}
|
36
|
+
```
|
37
|
+
|
38
|
+
ただし、このようなJSONにしたときのキーの順番に配慮しなければならないのであれば、先のJSONにしない判定をすればそれで事足りるのでは?と思います。
|
1
テキスト追加
answer
CHANGED
@@ -3,4 +3,10 @@
|
|
3
3
|
```javascript
|
4
4
|
if (JSON.stringify(path[0]) === '{"path1":111,"path2":111}') {
|
5
5
|
```
|
6
|
-
???? [サンプル](https://codepen.io/kilesa/pen/OJxyKvB)
|
6
|
+
???? [サンプル](https://codepen.io/kilesa/pen/OJxyKvB?editors=0010)
|
7
|
+
|
8
|
+
さはさりながら、JSONにしなくても以下でできます。
|
9
|
+
```javascript
|
10
|
+
if (path[0].path1 === 111 && path[0].path2 === 111) {
|
11
|
+
```
|
12
|
+
???? [サンプル](https://codepen.io/kilesa/pen/YzrwKPj?editors=0010)
|