Javascript 如何将函数数组转换为键为函数的对象';名称和值作为函数';返回值

Javascript 如何将函数数组转换为键为函数的对象';名称和值作为函数';返回值,javascript,function,object,dictionary,reduce,Javascript,Function,Object,Dictionary,Reduce,如何将函数数组添加到一个对象,其中键作为函数的名称,值作为函数的返回值。例如: var a=x=>"M",b=_=>"e",c=_=>"r",d=_=>"y",e=_=>"C", f=_=>"h",g=_=>"i",h=_=>"s",i=_=>"t",j=_=>"m", k=_=>"a",l=_=>" ",m=_=>"!", funcs = [a,b,c,d,e,f,g,h,i,j,k,

如何将函数数组添加到一个对象,其中键作为函数的名称,值作为函数的返回值。例如:

 var a=x=>"M",b=_=>"e",c=_=>"r",d=_=>"y",e=_=>"C",
     f=_=>"h",g=_=>"i",h=_=>"s",i=_=>"t",j=_=>"m",
     k=_=>"a",l=_=>" ",m=_=>"!",
     funcs = [a,b,c,d,e,f,g,h,i,j,k,l,m]

 // do some magic with funcs to receive myDict     
 var myDict = {'a':'M', 'b':'e', 'c':'r', 'd':'y', ...}
我试过这样的东西,但没用

var dict = funcs.reduce(function (acc, func) {
    acc[func.name] = func();
    return acc;
}, {});

我如何解决这个问题以达到想要的结果?不使用reduce有更好的方法吗?

您可以这样做,而不是reduce

var dict = {}
funcs.forEach(function (func) {
  dict[func.name] = func();
});

小提琴:

你可以这样做,而不是减少

var dict = {}
funcs.forEach(function (func) {
  dict[func.name] = func();
});

和fiddle:

循环函数数组
funcs
,使用
funcs[i]获取函数名。name
并通过
funcs[i]()
返回该函数的值

将名称存储为键,并将值返回为对象中该键的值

var a=x=>“M”,b=\=>“e”,c=\=>“r”,d=\=>“y”,e=\=>“c”,
f=>“h”,g=>“i”,h=>“s”,i=>“t”,j=>“m”,
k==>“a”,l==>”,m==>“!”;
var funcs=[a,b,c,d,e,f,g,h,i,j,k,l,m];
变量dict=(函数(funcs){
var dict={};

对于(var i=0;i循环函数数组
funcs
,使用
funcs[i]获取函数名。name
并通过
funcs[i]()
返回该函数的值

将名称存储为键,并将值返回为对象中该键的值

var a=x=>“M”,b=\=>“e”,c=\=>“r”,d=\=>“y”,e=\=>“c”,
f=>“h”,g=>“i”,h=>“s”,i=>“t”,j=>“m”,
k==>“a”,l==>”,m==>“!”;
var funcs=[a,b,c,d,e,f,g,h,i,j,k,l,m];
变量dict=(函数(funcs){
var dict={};

对于(var i=0;i我只是傻了一点,忘了在函数末尾返回一个值。所以我从一开始就用reduce提出的解决方案实际上是正确的

var dict = funcs.reduce(function (acc, func) {
    acc[func.name] = func();
    return acc;
}, {});

我只是太傻了,忘了在函数末尾返回一个值。所以我从一开始就用reduce提出的解决方案实际上是正确的

var dict = funcs.reduce(function (acc, func) {
    acc[func.name] = func();
    return acc;
}, {});

您可以使用和的组合

var a=x=>“M”,b=>“e”,c=>“r”,d=>“y”,e=>“c”,f=>“h”,g=>“i”,h=>“s”,i=>“t”,j=>“M”,k=>“a”,l=>“M=”,M=>“!”,
funcs=[a,b,c,d,e,f,g,h,i,j,k,l,m],
myDict=Object.assign(…funcs.map(f=>({[f.name]:f()}));
console.log(myDict);

。作为控制台包装{max height:100%!important;top:0;}
您可以使用和的组合

var a=x=>“M”,b=>“e”,c=>“r”,d=>“y”,e=>“c”,f=>“h”,g=>“i”,h=>“s”,i=>“t”,j=>“M”,k=>“a”,l=>“M=”,M=>“!”,
funcs=[a,b,c,d,e,f,g,h,i,j,k,l,m],
myDict=Object.assign(…funcs.map(f=>({[f.name]:f()}));
console.log(myDict);

.as控制台包装{max height:100%!important;top:0;}
acc[func.name]=func();
调用函数;您只需要
acc[func.name]=func;
acc[func.name]=func();
调用函数;您只需要
acc[func.name]=func;