数値添字配列
JavaScriptの配列は数値添字配列であり、文字列添字配列に対応していないからです。
文字列添字配列が必要な場合は、次のいずれかを使用する事になります。
- オブジェクト初期化子(
{}
)
Object.create(null)
new Map
new Map
Map には Map.prototype.forEach
があるので、比較的扱いやすいといえます。
JavaScript
1'use strict';
2function foo (string) {
3 var array = string.split(',');
4
5 for (var i = 0, len = array.length; i < len; ++i) {
6 array[i] = array[i].split(':');
7 }
8
9 return new Map(array);
10}
11
12var map = foo('a:1,b:2,c:3');
13
14console.log(map.get('a')); // 1
15console.log(JSON.stringify([...map.entries()])); // [["a","1"],["b","2"],["c","3"]]
16
17map.forEach((value, key) => console.log(value, key));
Object.create(null)
Object.create(null)
は {}
とほぼ等価ですが、プロトタイプ上にオブジェクトが存在しない為、__proto__
等の規定値となる名前もキー名に出来るメリットがあります。
JavaScript
1'use strict';
2function foo2 (string) {
3 var object = Object.create(null);
4
5 for (var i = 0, array = string.split(','), len = array.length, entry; i < len; ++i) {
6 entry = array[i].split(':');
7 object[entry[0]] = entry[1];
8 }
9
10 return object;
11}
12
13var object = foo2('a:1,b:2,c:3');
14
15console.log(object.a); // 1
16Object.keys(object).forEach(key => console.log(key, object[key]));
Re: tesopgmh さん
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/12 01:31
2017/12/12 01:36