回答編集履歴

1

Object\.assign\.apply 版コードを追加し、可変長引数にしました

2015/12/05 14:50

投稿

think49
think49

スコア18162

test CHANGED
@@ -24,19 +24,67 @@
24
24
 
25
25
 
26
26
 
27
- var sample = (function (reducefn) {
27
+ var mergeObjects1 = (function (assign, getObjectValues) {
28
28
 
29
- return function sample (object1, object2) {
29
+ function reducefn (previous, current) {
30
30
 
31
- return getObjectValues(object1).concat(getObjectValues(object2)).reduce(reducefn);
31
+ return assign(previous, current);
32
32
 
33
33
  }
34
34
 
35
- }(function reducefn (previous, current) {
36
35
 
37
- return Object.assign(previous, current);
38
36
 
37
+ return function mergeObjects1 (target) {
38
+
39
+ var array = [],
40
+
41
+ i = 0,
42
+
43
+ l = arguments.length;
44
+
45
+
46
+
47
+ while (i < l) {
48
+
49
+ array = array.concat(getObjectValues(arguments[i++]));
50
+
51
+ }
52
+
53
+
54
+
55
+ return array.reduce(reducefn);
56
+
57
+ }
58
+
59
+ }(Object.assign, getObjectValues));
60
+
61
+
62
+
63
+ var mergeObjects2 = (function (assign, getObjectValues) {
64
+
65
+ return function mergeObjects2 (target) {
66
+
67
+ var array = [],
68
+
69
+ i = 0,
70
+
71
+ l = arguments.length;
72
+
73
+
74
+
75
+ while (i < l) {
76
+
77
+ array = array.concat(getObjectValues(arguments[i++]));
78
+
79
+ }
80
+
81
+
82
+
83
+ return assign.apply(null, array);
84
+
39
- }));
85
+ };
86
+
87
+ }(Object.assign, getObjectValues));
40
88
 
41
89
 
42
90
 
@@ -46,7 +94,9 @@
46
94
 
47
95
 
48
96
 
49
- console.log(JSON.stringify(sample(a, b))); // {"id":2,"name":"なまえ","address":"tokyo","tel":11111,"zip":5555}
97
+ console.log(JSON.stringify(mergeObjects1(a, b))); // {"id":2,"name":"なまえ","address":"tokyo","tel":11111,"zip":5555}
98
+
99
+ console.log(JSON.stringify(mergeObjects2(a, b))); // {"id":2,"name":"なまえ","address":"tokyo","tel":11111,"zip":5555}
50
100
 
51
101
  ```
52
102
 
@@ -60,4 +110,14 @@
60
110
 
61
111
 
62
112
 
113
+ ---
114
+
115
+ **(2015/12/05 23:48追記)**
116
+
117
+
118
+
119
+ Object.assign.apply 版コードを追加し、可変長引数にしました。
120
+
121
+
122
+
63
123
  Re: Natade_Gorilla さん