繁体   English   中英

对象引用给出未定义

[英]Object reference giving undefined

对于我的愚蠢问题,请耐心等待,我是javscript的新手。 我正在尝试过滤地图,但无法将创建的对象分配给引用变量。

let serviceFeeMap = new Map();
  paymentAmountServiceFeeInfo.map(serviceFees => {
    if (serviceFees.serviceFees.serviceFeeApplicableMethods.length > 0) {
      serviceFees.serviceFees.serviceFeeApplicableMethods.map(applicableMethod => {
        let serviceFeeList = serviceFeeMap.get(applicableMethod);
        if (!serviceFeeList) {
          serviceFeeMap.set(applicableMethod, new Array(serviceFees.serviceFees));
        } else {
          serviceFeeList.push(serviceFees.serviceFees);
          serviceFeeMap.set(applicableMethod, serviceFeeList);
        }
      });
    }
  });



const finalResult = serviceFeeMap.forEach((v, k) => {
    let values = v;
    let count = 0;
    const arrayValues = values.map((value) => {
      if (count === 0) {
        count++;
         return {
           applicableMethod : k,
           serviceFeeAdjustmentType : value.serviceFeeAdjustmentType,
           serviceFeeAmount : value.serviceFeeAmount
         };
      } else {
        count++;
        return {
          applicableMethod : '',
          serviceFeeAdjustmentType : value.serviceFeeAdjustmentType,
          serviceFeeAmount : value.serviceFeeAmount
        };
      }

    })
    return arrayValues;
  });

我得到finalResult作为undefined。

您正在尝试从forEach()回调返回一个值,但它不能返回任何值。 forEach()方法按插入顺序对Map对象中的每个键/值对执行一次提供的函数。

根据MDN 文档

forEach方法对地图中实际存在的每个键执行一次提供的回调。 对于已删除的密钥,不会调用它。 但是,它针对存在但未定义的值执行。

这就是你所得到的原因undefinedfinalResult 在这种情况下,你可以写一个全球性的var持有的迭代值Map.prototype.forEach()

let finalResult = [];
serviceFeeMap.forEach((v, k) => {
    let values = v;
    let count = 0;
    const arrayValues = values.map((value) => {
        if (count === 0) {
            count++;
            return {
                applicableMethod : k,
                serviceFeeAdjustmentType : value.serviceFeeAdjustmentType,
                serviceFeeAmount : value.serviceFeeAmount
            };
        } else {
            count++;
            return {
                applicableMethod : '',
                serviceFeeAdjustmentType : value.serviceFeeAdjustmentType,
                serviceFeeAmount : value.serviceFeeAmount
            };
        }

    })
    finalResult.push(arrayValues);
})

这是因为forEach将返回undefined 您可以在map内部使用map ,该map将返回arrys数组,也可以在forEach外部创建一个数组,并在其中将arrayValues推送

 const finalResult = serviceFeeMap.map((v, k) => { let values = v; let count = 0; return values.map((value) => { if (count === 0) { count++; return { applicableMethod: k, serviceFeeAdjustmentType: value.serviceFeeAdjustmentType, serviceFeeAmount: value.serviceFeeAmount }; } else { count++; return { applicableMethod: '', serviceFeeAdjustmentType: value.serviceFeeAdjustmentType, serviceFeeAmount: value.serviceFeeAmount }; } }) }); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM