Javascript 如何根据循环的索引动态设置密钥

Javascript 如何根据循环的索引动态设置密钥,javascript,arrays,reactjs,object,Javascript,Arrays,Reactjs,Object,在这种情况下,表单对象数据必须转换为键值对。键的名称将基于迭代的索引。请帮忙。谢谢 data = [ {id: 1001, name: "john"}, {id: 1002, name: "samanta"} ] finalArr = [] data.forEach((elem, index) => { levels[index][base_id]: elem.id, levels[index][base_name]: elem

在这种情况下,表单对象数据必须转换为键值对。键的名称将基于迭代的索引。请帮忙。谢谢

data = [
  {id: 1001, name: "john"},
  {id: 1002, name: "samanta"}
]

finalArr = []
 
data.forEach((elem, index) => {
  levels[index][base_id]: elem.id,
  levels[index][base_name]: elem.name,
  finalArr.push({...above...})
});


expected output
[
  {levels[0][base_id]: 1001, levels[0][base_name]: "john"},
  {levels[1][base_id]: 1002, levels[1][base_name]: "samanta"}
]
试试这个:

data.forEach((元素,索引)=>{
返回{
级别[索引][基本id]:元素id,
级别[索引][基本名称]:元素名称,
最终推送({…上方…})
}
});
因为使用
=>{
会使JavaScript认为您正在打开箭头函数,而不是返回对象

也可以使用
代替

:)

您应该使用。这将保留原始数组中项目的索引,同时允许您更改项目的键/属性

const数据=[
{id:1001,名字:“约翰”},
{id:1002,名称:“萨曼塔”}
]
//这将为您提供问题中的示例输出
const out=data.map((项目,idx)=>{
返回{
[`levels[${idx}][base_id]`]:item.id,
[`levels[${idx}][base_name]`]:item.name
};
});

console.log(out);
我不知道base\u id是什么,base\u name是什么,所以我现在把它做成一个字符串


const finalArr=data.map((元素,索引)=>{
返回{
[`levels[${index}][base_id]`]:elem.id,
[`levels[${index}][base_name]`]:elem.name
}
});

nope不起作用。它抛出errordata.forEach((elem,index)=>{return{finalArr.push({levels[index][base_id]:elem.id,});});什么是base_id和base_name它没有在代码段中声明。它只是一个字符串。只有索引是基于迭代索引的动态索引,由代码段提供。请立即尝试。用[]覆盖字符串文本。我已经更新了答案。您也可以在这里尝试。谢谢您的帮助。但这在react中不起作用。由于某些原因,不接受使用字符串文本。它的抛出错误let finalArr=data.map((elem,index)=>{return{{code>levels[${index}][base_id]:elem.id,};);您能描述准确的错误吗?应为属性赋值。“;”应为。应为表达式。“)”应为。我已创建了一个正在工作的bin。嘿,kyle,但键名应该是动态的,并且基于迭代的索引。是否仍有可能?嘿@Sajz是否希望访问像
output[0][base_id]这样的输出
或者你真的想做
输出[0][“levels[0][base\u id]”]
?嘿,凯尔。只有索引是动态的,其余是正常的。
levels[${index}][base\u id]
:元素id、水平基准id正常string@Sajz好的,我已经用我认为您希望实际执行的操作更新了答案。请记住,如果对象的属性不是整数,则需要使用
levels[${index][“base\u id”]
levels[${index}]。base\u id