Javascript 动态构建对象
我想在typescript/javascript中动态创建一个对象。我在一个对象env中有一个数组Javascript 动态构建对象,javascript,typescript,Javascript,Typescript,我想在typescript/javascript中动态创建一个对象。我在一个对象env中有一个数组reqParam,它可能看起来像这样:env={reqParams:['fromTime','toTime']},它被传递给我的初始化函数以动态构建一个对象 constmyobject=_initObject(env.reqParams) 我已经启动了该函数,但我不知道如何将键和值正确地放入新对象中 private _initObject(raqParams: any) { let requ
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[])=>
您可以将这些内容编辑到您的答案中吗?我可以,但是输出将无法查看此内容。请告诉我是否有意义: