javascript - 对象引用给出未定义
问题描述
请耐心等待我的愚蠢问题,我是 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);
})
推荐阅读
- excel - 如何根据列表选择跳转到特定单元格
- c++ - 非 pod 对象的通用运算符 ==
- python - 如何用逗号分隔未打包的元组列表
- regex - 正则表达式在 XML 中查找子元素
- listview - 向 ListView 添加新项目时如何更新 UI
- reactjs - 导入的功能组件完成后如何更新反应组件
- node.js - 使用 NodeJS 访问 Dropbox 上的文件
- c# - 使用 multipart/form-data 解析休息响应
- javascript - 是否可以在不使用 for 循环的情况下找到素数?可以仅使用过滤器方法完成吗?
- java - Blob 提交到 DB 的错误是什么?