即使bindInfo中有数据,Bind中的数组元素也是未定义的。 有任何建议。
let bindinfo =
{
clientid: 1,
clientname: 'Web Client',
nowutc: now_utc,
bindlist: Bindings(this.props.bindDetails)
}
Bindings(bin)
{
var Bind = [];
Bind = bin.map(bindItem => {
var bindInfo;
bindInfo = {
bindingid: bindItem.bindId,
function: bindItem.functionName,
aggregation: bindItem.aggregation,
datalimit: bindItem.datalimit
}
Bind.push(bindInfo);
});
return Bind;
}
答案 0 :(得分:0)
.map
操作完成后,bind
被分配给.map
的结果-也就是说,.map
的每次迭代返回的元素都是新数组elemenet。但是,您永远不会从mapper函数返回任何内容,因此,即使您最初从push
到Bind
,后来的Bind
的重新分配也会重置它。
正确使用.map
并在每次迭代中返回该项目:
const Bind = bin.map(bindItem => {
return {
bindingid: bindItem.bindId,
function: bindItem.functionName,
aggregation: bindItem.aggregation,
datalimit: bindItem.datalimit
};
});
或者(不建议)使用forEach
而不是.map
,并且不要重新分配Bind
:
const Bind = [];
bin.forEach(bindItem => {
var bindInfo = {
bindingid: bindItem.bindId,
function: bindItem.functionName,
aggregation: bindItem.aggregation,
datalimit: bindItem.datalimit
}
Bind.push(bindInfo);
});
当您想通过调用.map
的结果将一个数组转换为另一个时,请使用.map
。否则,对于常规循环,请使用forEach
。