我有一個回呼函式,它帶有兩個引數和一個全域變數,我想將其添加到該函式回傳的值中。但是變數保持不變。請幫忙!
let sum = 0;
const myArr = [{name: 'dj', value: '2'}, {name: 'kd', value: '3'}];
function addObjValue(arr, total) {
arr.forEach(element => {
const val = element.value;
total = checkObjValue(val);
console.log(total);
})
}
function checkObjValue(x) {
switch(x) {
case '2':
return 1;
break;
case '3':
return 5;
break;
}
}
addObjValue(myArr, sum); // sum remains 0
uj5u.com熱心網友回復:
您可以創建一個區域變數并在那里保存總計,然后只回傳總計值
function addObjValue(arr) {
let total = 0
arr.forEach(element => {
const val = element.value;
total = checkObjValue(val);
console.log(total);
})
return total
}
然后讓你的總和等于回傳值
sum = addObjValue(myArr);
更新
一件事。要從陣列中獲取總和,您可以使用reduce方法
arr.reduce((totalSum, currenElement) => {
return totalSum currenElement.value
}, 0 /*first value of totalSum (by default equal to the first element of the array)*/)
uj5u.com熱心網友回復:
問題:
total范圍在下,addObjValue所以它不會添加到最終sum- 在 switch-case 之后中斷是無法訪問的
return 1;
您可以進行以下 2 項更改以使其正常作業。
let sum = 0;
const myArr = [{name: 'dj', value: '2'}, {name: 'kd', value: '3'}];
function addObjValue(arr, total) {
arr.forEach(element => {
const val = element.value;
total = checkObjValue(val);
})
return total; // change 1: returning total
}
function checkObjValue(x) {
switch(x) {
case '2':
return 1;
case '3':
return 5;
}
}
sum = addObjValue(myArr, sum); // change 2: assigned return value back to sum
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/355989.html
標籤:javascript 目的 返回值
下一篇:CentOS8.0安裝Nacos
