首页 > 解决方案 > 数组元素是未定义的 Javascript

问题描述

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

标签: javascriptreactjs

解决方案


.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.


推荐阅读