数组元素是未定义的Javascript

时间:2018-09-29 04:40:35

标签: javascript reactjs

即使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;
}

1 个答案:

答案 0 :(得分:0)

.map操作完成后,bind被分配给.map的结果-也就是说,.map的每次迭代返回的元素都是新数组elemenet。但是,您永远不会从mapper函数返回任何内容,因此,即使您最初从pushBind,后来的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