den*_*min 5 javascript prototypejs
我有一个数组 ['red', 'green', 'blue']
我想从这个Array创建一个新的Hash,结果应该是
{'red':true, 'green':true, 'blue':true}
Run Code Online (Sandbox Code Playgroud)
使用Prototype实现该目标的最佳方法是什么?
Fel*_*ing 15
只需迭代数组,然后创建哈希:
var obj = {};
for(var i = 0, l = colors.length; i < l; i++) {
obj[colors[i]] = true;
}
var hash = new Hash(obj);
Run Code Online (Sandbox Code Playgroud)
您还可以从头开始创建一个新的Hash对象:
var hash = new Hash();
for(var i = 0, l = colors.length; i < l; i++) {
hash.set(colors[i], true);
}
Run Code Online (Sandbox Code Playgroud)
我建议看看文档.
这个功能性的JavaScript解决方案使用Array.prototype.reduce():
['red', 'green', 'blue']
.reduce((hash, elem) => { hash[elem] = true; return hash }, {})
Run Code Online (Sandbox Code Playgroud)
参数详情:
回调的第三个参数是数组中正在处理的当前元素的索引.因此,如果您想要为其索引创建元素的查找表:
['red', 'green', 'blue'].reduce(
(hash, elem, index) => {
hash[elem] = index++;
return hash
}, {});
Run Code Online (Sandbox Code Playgroud)
返回:
Object {red: 0, green: 1, blue: 2}
Run Code Online (Sandbox Code Playgroud)