Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态构建对象_Javascript_Typescript - Fatal编程技术网

Javascript 动态构建对象

Javascript 动态构建对象,javascript,typescript,Javascript,Typescript,我想在typescript/javascript中动态创建一个对象。我在一个对象env中有一个数组reqParam,它可能看起来像这样:env={reqParams:['fromTime','toTime']},它被传递给我的初始化函数以动态构建一个对象 constmyobject=_initObject(env.reqParams) 我已经启动了该函数,但我不知道如何将键和值正确地放入新对象中 private _initObject(raqParams: any) { let requ

我想在typescript/javascript中动态创建一个对象。我在一个对象env中有一个数组
reqParam
,它可能看起来像这样:
env={reqParams:['fromTime','toTime']}
,它被传递给我的初始化函数以动态构建一个对象

constmyobject=_initObject(env.reqParams)

我已经启动了该函数,但我不知道如何将键和值正确地放入新对象中

private _initObject(raqParams: any) {
    let requestTemplate = {
      bodyjson : "$util.escapeJavaScript($input.json('$'))",
      "cognitoUserId": "$context.authorizer.claims.sub", 
      "cognitoUserEmail": "$context.authorizer.claims.email"
    };
    reqParams.forEach(param => {
      // build new item
      let templateEntry = "$input.params('`param`')";
      // Put new item into object
      requestTemplate[`param`] = templateEntry;
    });
}
希望你能看到我想要达到的目标。例如,以下是2个reqParams:fromTime和toTime的预期结果:

      {
        bodyjson : "$util.escapeJavaScript($input.json('$'))",       
        "fromTime": "$input.params('fromTime')",
        "toTime": "$input.params('toTime')",
        "cognitoUserId": "$context.authorizer.claims.sub",
        "cognitoUserEmail": "$context.authorizer.claims.email"
      }
js使用
${}
进行字符串插值

key = 'dynamic'
object[key]  = value
将给您一个对象
{'dynamic':value}

js使用
${}
进行字符串插值

key = 'dynamic'
object[key]  = value

将为您提供一个对象
{'dynamic':value}

1个输入错误和2个修复,它可以正常工作,如下所示:

const\u initObject=(reqParams)=>{
让requestTemplate={
bodyjson:“$util.escapeJavaScript($input.json(“$”)”,
“cognitoUserId”:“$context.authorizer.claims.sub”,
“cognitoUserEmail”:“$context.authorizer.claims.email”
};
请求参数forEach(参数=>{
//创建新项目
让templateEntry=`$input.params('${param}')`;
//将新项目放入对象中
requestTemplate[param]=templateEntry;
});
返回请求模板;
}

log(_initObject(['fromTime','toTime'])1个输入错误和2个修复,它可以正常工作,如下所示:

const\u initObject=(reqParams)=>{
让requestTemplate={
bodyjson:“$util.escapeJavaScript($input.json(“$”)”,
“cognitoUserId”:“$context.authorizer.claims.sub”,
“cognitoUserEmail”:“$context.authorizer.claims.email”
};
请求参数forEach(参数=>{
//创建新项目
让templateEntry=`$input.params('${param}')`;
//将新项目放入对象中
requestTemplate[param]=templateEntry;
});
返回请求模板;
}

log(_initObject(['fromTime','toTime'])伟大的工作!我们快到了!!!自从我在typescript工作以来,有一些MOD。我必须编写
const\u initObject=((reqParamsArray:string[])
。由于requestTemplate[param],
元素隐式具有“any”类型,因为无法使用“string”类型的表达式对类型进行索引…在类型上找不到具有“string”类型参数的索引签名{bodyjson:string;cognitoUserId:string;cognitoUserEmail:string;}.ts(7053)
您可以尝试设置
((param:string)=>{
是。这实际上就是我所做的。还需要使用
let requestTemplate:{[index:string]:any}={
(reqParamsArray:string[])=>
也许你可以将这些编辑到你的答案中?我可以,但是输出将不起作用。看看这个。让我知道它是否有意义:伟大的工作!我们就快到了!!!自从我在typescript中工作以来,有一些mods。我必须编写
const _initObject=((reqParamsArray:string[])
。由于requestTemplate[param]仍然存在一个错误:
元素隐式具有“any”类型,因为类型“string”的表达式不能用于索引类型…在类型“{bodyjson:string;cognitoUserId:string;cognitoUserEmail:string;”ts(7053)上未找到具有“string”类型参数的索引签名
您可以尝试设置
((param:string)=>{
是。这实际上就是我所做的。还需要使用
让requestTemplate:{[index:string]:any}={
(reqParamsArray:string[])=>
您可以将这些内容编辑到您的答案中吗?我可以,但是输出将无法查看此内容。请告诉我是否有意义: