回答編集履歴

2

コードの差し替え

2019/11/11 10:22

投稿

AkitoshiManabe
AkitoshiManabe

スコア5432

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
- return Object.keys( oj ).filter( pos => {
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
- //else if( oj[pos].item > 1 ) { // typo
45
+ else if( oj[pos].count > 1 ) {
36
46
 
37
- else if( oj[pos].count > 1 ) { // oj内で重複しない
47
+ // oj内で重複しない
38
48
 
39
49
  delete oj[pos]
40
50
 
41
51
  }
42
52
 
43
- return oj[pos] && oj[pos].item;
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
- return [ filterByPos( hasA, hasB ), filterByPos( hasB, hasA ) ];
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 のため

2019/11/11 10:22

投稿

AkitoshiManabe
AkitoshiManabe

スコア5432

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].item > 1 ) { // oj内で重複しない
37
+ else if( oj[pos].count > 1 ) { // oj内で重複しない
36
38
 
37
39
  delete oj[pos]
38
40