[英]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方法对地图中实际存在的每个键执行一次提供的回调。 对于已删除的密钥,不会调用它。 但是,它针对存在但未定义的值执行。
这就是你所得到的原因undefined
的finalResult
。 在这种情况下,你可以写一个全球性的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.