这将是预期的行为
a = ['foo', 'bar', 'thing', 'etc'];
b = someFunction(a, false);
b; //{'foo': false, 'bar': false, 'thing': false, 'etc': false}
是否有一些我可以使用的函数,它将采用数组和默认值并生成一个对象,每个数组元素作为指向默认值的键?
编辑:谢谢大家写我自己的建议。我只是想知道一个内置的东西,比如python的默认字典。
答案 0 :(得分:2)
有一个!并且偶然它具有确切的someFunction
名称!!!
function someFunction(arr, value) {
return arr.reduce(function(result, key) {
result[key] = value;
return result;
}, {});
}
JSFiddle:http://jsfiddle.net/VH8Wr/
答案 1 :(得分:1)
这是一个将获取键和值列表的函数。它创建一个对象,并使用提供的值动态设置它的属性名称,然后返回它。
function makeObj(keys, value) {
var obj = {};
if (keys instanceof Array) {
for (var i = 0; i < keys.length; i++ ) {
if (keys[i]) {
obj[keys[i]] = value;
}
}
return obj;
}
return false;
}
var a = ['foo', 'bar', 'thing', 'etc'];
var b = makeObj(a, false);
b; //{'foo': false, 'bar': false, 'thing': false, 'etc': false}
或者你可以把它变成一个类(我知道你要求一个函数,但这就是我要做的......):
function makeObj(keys, value) {
if (keys instanceof Array) {
for (var i = 0; i < keys.length; i++ ) {
if (keys[i]) {
this[keys[i]] = value;
}
}
}
}
var a = ['foo', 'bar', 'thing', 'etc'];
var b = new makeObj(a, false);
b; //{'foo': false, 'bar': false, 'thing': false, 'etc': false}
答案 2 :(得分:0)
function someFunction(arr, defval)
{
var resultObj = {};
arr.forEach(function(el) { resultObj[el] = defval; });
return resultObj;
}