Javascript 将响应从api转换为具有特定格式的对象

Javascript 将响应从api转换为具有特定格式的对象,javascript,Javascript,我收到了api的回复 columns: Array(4) 0: "Id" 1: "Title" 2: "Description" 3: "IsActive" 我需要将它转换成这种格式,这样会有“字段”,在字段下面列出api响应中的值,每个值上都有类型,我需要确定它是Id还是IsActive,然后是数字。我只允许遵循这个特定的对象格式,而且我需要支持IE浏览器 fields: { Id: { type: "number" }, Title: { type: "string" }, Descrip

我收到了api的回复

columns: Array(4)
0: "Id"
1: "Title"
2: "Description"
3: "IsActive"
我需要将它转换成这种格式,这样会有“字段”,在字段下面列出api响应中的值,每个值上都有类型,我需要确定它是Id还是IsActive,然后是数字。我只允许遵循这个特定的对象格式,而且我需要支持IE浏览器

fields: {
Id: { type: "number" },
Title: { type: "string" },
Description: { type: "string" },
IsActive: { type: "number" }
}

您需要包含关于哪些类型是数字的附加信息。此解决方案将这些存储在数组中,将此数组传递到函数中,然后返回一个函数,该函数接受列数组并返回字段定义的对象

const makeFields=(numericTypes)=>(columns)=>columns.reduce(
(a,s)=>({…a[s]:{type:numericTypes.includes?(s)“'numeric':'string'}”),
{}
)
常量numericTypes=['Id',“IsActive”]
const columns=[“Id”、“Title”、“Description”、“IsActive”]

log(makeFields(numericTypes)(columns))
您自己尝试过什么?我尝试过使用它,但不知道如何创建特定格式`var columnNames=Object.keys(columns).map(函数(键){return{fields:columns[key]})`@ScottSauyet我也尝试过这个返回{fields:{columns[key]:{type:{''}}}}但是看起来语法不正确谢谢Scott的帮助,我现在正在尝试,但是看起来箭头函数没有被识别,我在谷歌上搜索,它说箭头函数在IE中不起作用?对吗?或者我只是在我的视觉研究中遗漏了一些东西你确实提到过IE,但我已经摆脱了对其怪癖思考太多的习惯,通过使用Babel来传输这样的代码。用函数声明或函数表达式重写很容易。更新添加到句柄IE中。感谢Scott,我试图转换它,但我得到了堆栈(a,s)=>({…a,[s],我会尝试一下,感谢上面的帮助。在我的更新中,我实际上修改了累加器。我通常不喜欢这样做,但它可能是无害的,因为它会在调用之间重新初始化。