React/Javascript映射函数-返回数组

React/Javascript映射函数-返回数组,javascript,reactjs,Javascript,Reactjs,我有一个帐户列表,每个帐户上都有大量的属性。我需要向一个方法发送一个精简版本,其中只有两个字段的数组。我必须将一个名为options的属性传递给我的SelectInput组件,该组件有一个ID和值的列表,它向上呈现一个下拉列表 <SelectInput options={ this.value.allAccountsList .map((item, index) => { new {

我有一个帐户列表,每个帐户上都有大量的属性。我需要向一个方法发送一个精简版本,其中只有两个字段的数组。我必须将一个名为
options
的属性传递给我的SelectInput组件,该组件有一个ID和值的列表,它向上呈现一个下拉列表

<SelectInput 
    options={
       this.value.allAccountsList
          .map((item, index) => {
                          new { 
                            id: item.Id,
                            value: item.name
                          }
                      })  
                    }/>
{
新{
id:item.id,
值:item.name
}
})  
}/>
但我得到:

应为赋值或函数调用,而不是看到表达式


在这里使用map是否正确?如果是,我做错了什么?

map
是正确的,是的。问题在于
new
关键字。使用对象文字创建对象时,不使用
new
。另一个问题是箭头函数没有返回值。解决这两个问题,只需将
new
更改为
return

<SelectInput 
    options={
        this.value.allAccountsList
        .map((item, index) => {
            return { 
                id: item.Id,
                value: item.name
            };
        })  
    }
/>

您不需要在map回调中使用
new

试试这个:

<SelectInput 
    options={
       this.value.allAccountsList
          .map((item, index) => ({
                            id: item.Id,
                            value: item.name
                      }))  
                    }/>
({
id:item.id,
值:item.name
}))  
}/>
而不是这个

new { 
   id: item.Id,
   value: item.name
}
这样做,

return { 
 id: item.Id,
 value: item.name
}

新的替换为应该处理它的返回。因此,映射回调应该使用new返回值,而不是返回导致错误消息的值

还有一个建议是,不要使用组件中的内联代码来转换数据,而是尝试将其提取出来,并使用它来真正帮助简化代码的读取和维护

<SelectInput 
    options={
       this.value.allAccountsList
          .map((item, index) => {
                          return { 
                            id: item.Id,
                            value: item.name
                          }
                      })  
                    }/>
{
返回{
id:item.id,
值:item.name
}
})  
}/>

map在这个需求中使用是正确的,唯一的问题是使用return var newData=this.value.allAccountsList.map((item,index)=>{return{id:item.id,value:item.name})删除new
<SelectInput 
    options={
       this.value.allAccountsList
          .map((item, index) => {
                          return { 
                            id: item.Id,
                            value: item.name
                          }
                      })  
                    }/>