回答編集履歴
1
Object\.assign\.apply 版コードを追加し、可変長引数にしました
test
CHANGED
@@ -24,19 +24,67 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
var
|
27
|
+
var mergeObjects1 = (function (assign, getObjectValues) {
|
28
28
|
|
29
|
-
|
29
|
+
function reducefn (previous, current) {
|
30
30
|
|
31
|
-
return
|
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(
|
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 さん
|