回答編集履歴
3
コード修正。
test
CHANGED
@@ -42,13 +42,9 @@
|
|
42
42
|
|
43
43
|
var x1 = (function(j) {
|
44
44
|
|
45
|
-
return JSON.parse('{' + a.join(',').replace(new RegExp('((\\w+,){' + (size - \
|
45
|
+
return JSON.parse('{' + a.join(',').replace(new RegExp('((\\w+,){' + (size - 1) + '}(\\w))', 'g'), function(m) {
|
46
46
|
|
47
|
-
1) + '}(\\w))', 'g'), function(m) {
|
48
|
-
|
49
|
-
return '"' + String.fromCharCode(65 + j++) + '":"' + m.split(',').join('')
|
47
|
+
return '"' + String.fromCharCode(65 + j++) + '":"' + m.split(',').join('') + '"';
|
50
|
-
|
51
|
-
+ '"';
|
52
48
|
|
53
49
|
}) + '}');
|
54
50
|
|
2
size 可変に修正
test
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
for (i = j = 0, len = a.length; i < len; i += size, j++) {
|
26
26
|
|
27
|
-
ret[String.fromCharCode(65 + j)] = a.splice(0,
|
27
|
+
ret[String.fromCharCode(65 + j)] = a.splice(0, size).join('');
|
28
28
|
|
29
29
|
}
|
30
30
|
|
@@ -38,9 +38,13 @@
|
|
38
38
|
|
39
39
|
|
40
40
|
|
41
|
+
|
42
|
+
|
41
43
|
var x1 = (function(j) {
|
42
44
|
|
43
|
-
return JSON.parse('{' + a.join(',').replace(
|
45
|
+
return JSON.parse('{' + a.join(',').replace(new RegExp('((\\w+,){' + (size - \
|
46
|
+
|
47
|
+
1) + '}(\\w))', 'g'), function(m) {
|
44
48
|
|
45
49
|
return '"' + String.fromCharCode(65 + j++) + '":"' + m.split(',').join('') \
|
46
50
|
|
1
サンプルコードのバグ修正、追加コード、実行結果付与
test
CHANGED
@@ -1,4 +1,10 @@
|
|
1
1
|
私は素の javascript だとこんな感じで書いちゃいますが、きっと他の人がもっと面白い回答をしてくれるでしょう。
|
2
|
+
|
3
|
+
(最初に示したコードは `splice()` で元の配列を破壊しちゃっていたので、クローンを作る一行を追加しました。
|
4
|
+
|
5
|
+
あと、誰もやらないだろう、という `JSON.parse()` と正規表現で処理するコードも書いてみました。
|
6
|
+
|
7
|
+
実行結果もつけました。)
|
2
8
|
|
3
9
|
```javascript
|
4
10
|
|
@@ -14,9 +20,11 @@
|
|
14
20
|
|
15
21
|
var x0 = (function(a,ret,len,i, j){
|
16
22
|
|
23
|
+
a = a.concat();
|
24
|
+
|
17
25
|
for (i = j = 0, len = a.length; i < len; i += size, j++) {
|
18
26
|
|
19
|
-
ret[String.fromCharCode(65 + j)] =a.splice(0, 3).join('');
|
27
|
+
ret[String.fromCharCode(65 + j)] = a.splice(0, 3).join('');
|
20
28
|
|
21
29
|
}
|
22
30
|
|
@@ -28,4 +36,34 @@
|
|
28
36
|
|
29
37
|
console.log('use splice', x0);
|
30
38
|
|
39
|
+
|
40
|
+
|
41
|
+
var x1 = (function(j) {
|
42
|
+
|
43
|
+
return JSON.parse('{' + a.join(',').replace(/((\w+,){2}(\w))/g, function(m) {
|
44
|
+
|
45
|
+
return '"' + String.fromCharCode(65 + j++) + '":"' + m.split(',').join('') \
|
46
|
+
|
47
|
+
+ '"';
|
48
|
+
|
49
|
+
}) + '}');
|
50
|
+
|
51
|
+
})(0);
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
console.log('use regexp', x1);
|
56
|
+
|
31
57
|
```
|
58
|
+
|
59
|
+
以下、実行結果
|
60
|
+
|
61
|
+
```
|
62
|
+
|
63
|
+
initial array [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i' ]
|
64
|
+
|
65
|
+
use splice { A: 'abc', B: 'def', C: 'ghi' }
|
66
|
+
|
67
|
+
use regexp { A: 'abc', B: 'def', C: 'ghi' }
|
68
|
+
|
69
|
+
```
|