回答編集履歴
1
someで書き直し
test
CHANGED
@@ -26,13 +26,11 @@
|
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
letを普段遣いしていますが**IE11非対応のサイト**と考えて良いのでしょうか?
|
30
|
-
|
31
|
-
|
29
|
+
※find→someで全体的に書き直しました。
|
32
30
|
|
33
31
|
|
34
32
|
|
35
|
-
|
33
|
+
filterより[some](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/some)を利用したほうが良いでしょう。
|
36
34
|
|
37
35
|
filterの場合は空、もしくは値の複数入った配列が取得できます。
|
38
36
|
|
@@ -40,25 +38,13 @@
|
|
40
38
|
|
41
39
|
|
42
40
|
|
43
|
-
|
41
|
+
someの場合は1件該当する値を見つけたら、そこで捜索を打ち切ります。
|
44
42
|
|
45
43
|
つまり、for文のifで一致する値を見つけたらすぐに`break;`構文でループから抜ける処理に似た挙動になります。
|
46
44
|
|
47
45
|
|
48
46
|
|
49
47
|
```JavaScript
|
50
|
-
|
51
|
-
// オブジェクトは空であっても必ずtrueとして判定される
|
52
|
-
|
53
|
-
console.log(Boolean({})); // true
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
// findで見つからなければundefinedになる
|
58
|
-
|
59
|
-
console.log([].find(_ => false)); // undefined
|
60
|
-
|
61
|
-
|
62
48
|
|
63
49
|
// 変数名は何がしたいかでちゃんと名付けた方が良いのと、letは後から変更したいケース以外では使わないように
|
64
50
|
|
@@ -82,9 +68,9 @@
|
|
82
68
|
|
83
69
|
|
84
70
|
|
85
|
-
// 「重複データ」が無ければ処理なので、
|
71
|
+
// 「重複データ」が無ければ処理なので、hasDuplicatedDataという変数名にした
|
86
72
|
|
87
|
-
const
|
73
|
+
const hasDuplicatedData = aryData.some(data =>
|
88
74
|
|
89
75
|
(data.id_1 == id_1 && data.id_2 == id_2) ||
|
90
76
|
|
@@ -92,10 +78,26 @@
|
|
92
78
|
|
93
79
|
);
|
94
80
|
|
95
|
-
if (!
|
81
|
+
if (!hasDuplicatedData) {
|
96
82
|
|
97
83
|
console.log("処理");
|
98
84
|
|
99
85
|
}
|
100
86
|
|
87
|
+
|
88
|
+
|
89
|
+
// someでスッキリ書けるから、関数化したほうが良さそう
|
90
|
+
|
91
|
+
const isDuplicatedData = data =>
|
92
|
+
|
93
|
+
(data.id_1 == id_1 && data.id_2 == id_2) ||
|
94
|
+
|
95
|
+
(data.id_1 == id_2 && data.id_2 == id_1);
|
96
|
+
|
97
|
+
if (!aryData.some(isDuplicatedData)) {
|
98
|
+
|
99
|
+
console.log("処理")l
|
100
|
+
|
101
|
+
}
|
102
|
+
|
101
103
|
```
|