[英]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.