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;
。