回答編集履歴
3
回答をinput要素を前提としたものに修正
test
CHANGED
@@ -1,18 +1,26 @@
|
|
1
|
-
|
1
|
+
`input`要素を前提とした内容に修正
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
---
|
6
|
+
|
7
|
+
`Object.entries`と`Array.reduce`の組み合わせが一番近いかな?
|
2
8
|
|
3
9
|
|
4
10
|
|
5
11
|
```HTML
|
6
12
|
|
7
|
-
<
|
13
|
+
<input name="item_id" value="id"/>
|
8
14
|
|
9
|
-
<
|
15
|
+
<input name="item_name" value="name"/>
|
10
16
|
|
11
|
-
<
|
17
|
+
<input name="catch_copy" value="copy"/>
|
12
18
|
|
13
|
-
<
|
19
|
+
<input name="price" value="price"/>
|
14
20
|
|
15
21
|
```
|
22
|
+
|
23
|
+
|
16
24
|
|
17
25
|
```JavaScript
|
18
26
|
|
@@ -32,47 +40,27 @@
|
|
32
40
|
|
33
41
|
};
|
34
42
|
|
43
|
+
|
44
|
+
|
45
|
+
/*
|
46
|
+
|
35
47
|
const obj = {};
|
36
48
|
|
37
49
|
Object.entries(map).forEach(
|
38
50
|
|
39
51
|
([key, val]) =>
|
40
52
|
|
41
|
-
obj[key] = (document.querySelector(val) || {
|
53
|
+
obj[key] = (document.querySelector(val) || {}).defaultValue
|
42
54
|
|
43
55
|
);
|
44
56
|
|
45
|
-
console.log(JSON.stringify(obj));
|
46
|
-
|
47
|
-
}
|
48
|
-
|
49
|
-
```
|
50
|
-
|
51
|
-
`Object.entries`と`Array.reduce`の組み合わせが一番近いかな?
|
52
|
-
|
53
|
-
|
57
|
+
*/
|
54
|
-
|
55
|
-
"use strict";
|
56
|
-
|
57
|
-
{
|
58
|
-
|
59
|
-
const map = {
|
60
|
-
|
61
|
-
"id": "[name='item_id']",
|
62
|
-
|
63
|
-
"name": "[name='item_name']",
|
64
|
-
|
65
|
-
"catch_copy": "[name='catch_copy']",
|
66
|
-
|
67
|
-
"price": "[name='price']"
|
68
|
-
|
69
|
-
};
|
70
58
|
|
71
59
|
const obj = Object.entries(map).reduce(
|
72
60
|
|
73
61
|
(prev, [key, val]) =>
|
74
62
|
|
75
|
-
(prev[key] = (document.querySelector(val) || {
|
63
|
+
(prev[key] = (document.querySelector(val) || {}).defaultValue, prev)
|
76
64
|
|
77
65
|
, {}
|
78
66
|
|
@@ -91,9 +79,3 @@
|
|
91
79
|
|
92
80
|
|
93
81
|
ぶっちゃけ`for-in`構文でぶん回すほうがよほど判りやすいと思いますが
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
NOTE:
|
98
|
-
|
99
|
-
DOMに`defaultValue`というAPIありましたっけ?
|
2
リンクを追加
test
CHANGED
@@ -84,6 +84,14 @@
|
|
84
84
|
|
85
85
|
```
|
86
86
|
|
87
|
+
[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/entries](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/entries)
|
88
|
+
|
89
|
+
[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
ぶっちゃけ`for-in`構文でぶん回すほうがよほど判りやすいと思いますが
|
94
|
+
|
87
95
|
|
88
96
|
|
89
97
|
NOTE:
|
1
Array.reduceを使った例を追加
test
CHANGED
@@ -48,6 +48,42 @@
|
|
48
48
|
|
49
49
|
```
|
50
50
|
|
51
|
+
`Object.entries`と`Array.reduce`の組み合わせが一番近いかな?
|
52
|
+
|
53
|
+
```JavaScript
|
54
|
+
|
55
|
+
"use strict";
|
56
|
+
|
57
|
+
{
|
58
|
+
|
59
|
+
const map = {
|
60
|
+
|
61
|
+
"id": "[name='item_id']",
|
62
|
+
|
63
|
+
"name": "[name='item_name']",
|
64
|
+
|
65
|
+
"catch_copy": "[name='catch_copy']",
|
66
|
+
|
67
|
+
"price": "[name='price']"
|
68
|
+
|
69
|
+
};
|
70
|
+
|
71
|
+
const obj = Object.entries(map).reduce(
|
72
|
+
|
73
|
+
(prev, [key, val]) =>
|
74
|
+
|
75
|
+
(prev[key] = (document.querySelector(val) || {dataset: {defaultValue: null}}).dataset.defaultValue, prev)
|
76
|
+
|
77
|
+
, {}
|
78
|
+
|
79
|
+
);
|
80
|
+
|
81
|
+
console.log(JSON.stringify(obj));
|
82
|
+
|
83
|
+
}
|
84
|
+
|
85
|
+
```
|
86
|
+
|
51
87
|
|
52
88
|
|
53
89
|
NOTE:
|