回答編集履歴
2
コードの差し替え
test
CHANGED
@@ -12,6 +12,8 @@
|
|
12
12
|
|
13
13
|
let hasB = {};
|
14
14
|
|
15
|
+
|
16
|
+
|
15
17
|
let setPos = (oj,v) => {
|
16
18
|
|
17
19
|
let pos = `${v.x}:${v.y}`;
|
@@ -22,9 +24,17 @@
|
|
22
24
|
|
23
25
|
let filterByPos = (oj,oj2) => {
|
24
26
|
|
25
|
-
|
27
|
+
let rslt = [];
|
26
28
|
|
29
|
+
let keys = Object.keys( oj );
|
30
|
+
|
31
|
+
for ( let i=0, l=keys.length; i<l; ++i ) {
|
32
|
+
|
33
|
+
let pos = keys[i];
|
34
|
+
|
27
|
-
if( oj2.hasOwnProperty(pos) ) {
|
35
|
+
if( oj2.hasOwnProperty(pos) ) {
|
36
|
+
|
37
|
+
// 両方に存在しない
|
28
38
|
|
29
39
|
delete oj[pos];
|
30
40
|
|
@@ -32,26 +42,40 @@
|
|
32
42
|
|
33
43
|
}
|
34
44
|
|
35
|
-
|
45
|
+
else if( oj[pos].count > 1 ) {
|
36
46
|
|
37
|
-
|
47
|
+
// oj内で重複しない
|
38
48
|
|
39
49
|
delete oj[pos]
|
40
50
|
|
41
51
|
}
|
42
52
|
|
43
|
-
|
53
|
+
if( oj[pos] ) rslt.push(oj[pos].item);
|
44
54
|
|
45
|
-
}
|
55
|
+
}
|
56
|
+
|
57
|
+
return rslt;
|
46
58
|
|
47
59
|
};
|
48
60
|
|
49
|
-
a.forEach(v => setPos(hasA,v) );
|
50
61
|
|
51
|
-
b.forEach(v => setPos(hasB,v) );
|
52
62
|
|
53
|
-
|
63
|
+
a.forEach(v => {setPos(hasA,v)} );
|
54
64
|
|
65
|
+
b.forEach(v => {setPos(hasB,v)} );
|
66
|
+
|
67
|
+
return [
|
68
|
+
|
69
|
+
filterByPos( hasA, hasB )
|
70
|
+
|
71
|
+
, filterByPos( hasB, hasA )
|
72
|
+
|
73
|
+
];
|
74
|
+
|
55
|
-
}
|
75
|
+
};
|
56
76
|
|
57
77
|
```
|
78
|
+
|
79
|
+
オブジェクト(``{x: num, y:num }``)を返却してなかったのでコードを差し替えしました。
|
80
|
+
|
81
|
+
filter().map() を使うべきところforで走査回数を抑えました。
|
1
typo のため
test
CHANGED
@@ -32,7 +32,9 @@
|
|
32
32
|
|
33
33
|
}
|
34
34
|
|
35
|
+
//else if( oj[pos].item > 1 ) { // typo
|
36
|
+
|
35
|
-
else if( oj[pos].
|
37
|
+
else if( oj[pos].count > 1 ) { // oj内で重複しない
|
36
38
|
|
37
39
|
delete oj[pos]
|
38
40
|
|