我想创建一个包含多个对象的对象。数据是这样的
dataList = [{inputFieldId: 1, dataField:{...}, data: '120'}, {inputFieldId: 2, dataField:{...}, data: '120'} ]
想要这样的东西。
res = [{1: '120'}, {2: '120'}]
我为此编写了一个代码,但是它只给了我最后的对象数据。
constructor(){
super()
this.state = {
inputValue:{},
datalist = [],
}
}
async componentWillMount(){
for(var key in dataList){
this.setState({
inputValue: {
...this.state.inputValue,
[dataList[key].inputFieldId]: dataList[key].data
}
})
}
}
code output = { 2: '120'}
答案 0 :(得分:0)
您可以尝试以下代码:
constructor(){
super()
this.state = {
inputValue: {},
datalist = [],
}
}
async componentWillMount() {
const inputValues = [];
for(var key in dataList) {
inputValues.push({[dataList[key].inputFieldId]: dataList[key].data});
}
this.setState({ inputValue: inputValues });
}
答案 1 :(得分:0)
在{}
中用 []
替换 inputValue:{ ...this.state.inputValue,.....}
,并用[dataList[key].inputFieldId]: dataList[key].data
将{}
换成 async componentWillMount(){
for(var key in dataList){
this.setState({
inputValue: [
...this.state.inputValue,
{[dataList[key].inputFieldId]: dataList[key].data}
]
})
}
inputValue
但是this.state = {
inputValue: [],
datalist = [],
}
状态应声明为类似数组:
let dataList = [{
inputFieldId: 1,
dataField: {},
data: '120'
}, {
inputFieldId: 2,
dataField: {},
data: '120'
}]
let inputValue = []
for (var key in dataList) {
inputValue = [
...inputValue,
{
[dataList[key].inputFieldId]: dataList[key].data
}
]
}
console.log(inputValue)
纯JS中的示例
[Route("api/[controller]")]
[ApiController]
public class TenantsController : ControllerBase
{
private readonly TenantContext _context;
public TenantsController(TenantContext context) => _context = context;
//GET: /api/tenants
[HttpGet]
public ActionResult<IEnumerable<Tenant>> GetTenants()
{
return _context.TenantDetails;
}