问题是函数 sumFunc 没有一起计算 array2 数字。输出返回 3 5 7 8 9 11 13 15 16 17 19 20
下面是JS代码、输出和预期输出。
代码:
function checkFunc(arr, f1, f2, f3) {
const containsStrings = arr.some(item => typeof item === 'string');
const containsNumbers = arr.some(item => typeof item === 'number' && !isNaN(item));
if (containsStrings && !containsNumbers) {
console.log('Taulukossa tekstiä. Yhdistetään sanat:');
} else if (!containsStrings && containsNumbers) {
console.log('Taulukossa vain lukuja. Lasketaan summa:');
} else if (containsStrings && containsNumbers) {
console.log('Taulukossa tekstiä ja numeroita. Yhdistetään sanat:');
} else {
console.log('Ei tekstiä tai numeroita');
}
}
function combineFunc(arr) {
return arr.join(' ') + (' ');
}
function sumFunc(arr) {
var sum = 0;
for (var i = 0; i < arr.length; i++) {
if (typeof arr[i] === 'number' && !isNaN(arr[i])) {
sum += arr[i];
}
}
return sum;
}
//cant change code under this
var array1 = ["Tämän", "taulukon", "alkiot", "muodostavat", "lauseen"];
var array2 = [3, 5, 7, 8, 9, 11, 13, 15, 16, 17, 19, 20];
var array3 = [5, "kertaa", 3, "on", 15];
function someFunction(arr, f1, f2, f3) {
if (!f1(arr)) {
console.log(f2(arr));
} else {
console.log(f3(arr));
}
}
someFunction(array1, checkFunc, combineFunc, sumFunc);
someFunction(array2, checkFunc, combineFunc, sumFunc);
someFunction(array3, checkFunc, combineFunc, sumFunc);
输出:
Taulukossa tekstiä. Yhdistetään sanat:
Tämän taulukon alkiot muodostavat lauseen
Taulukossa vain lukuja. Lasketaan summa:
3 5 7 8 9 11 13 15 16 17 19 20
Taulukossa tekstiä ja numeroita. Yhdistetään sanat:
5 kertaa 3 on 15
预期输出:
Taulukossa tekstiä. Yhdistetään sanat:
Tämän taulukon alkiot muodostavat lauseen
Taulukossa vain lukuja. Lasketaan summa:
143
Taulukossa tekstiä. Yhdistetään sanat:
5 kertaa 3 on 15
我尝试更改 sumFunc 函数,但看起来它已经是正确的。我也尝试过 .reduce :
function sumFunc(arr) {
var sum = arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
return sum;
}
但这没有用。问题可能出在其他地方。我认为这可能是 checkFunc 但我不确定,因为我是从 js 开始的。
正确的代码应该是这样的:
function checkFunc(arr, f1, f2, f3) {
const containsStrings = arr.some(item => typeof item === 'string');
const containsNumbers = arr.some(item => typeof item === 'number' && !isNaN(item));
if (containsStrings && !containsNumbers) {
console.log('Taulukossa tekstiä. Yhdistetään sanat:');
return false;
} else if (!containsStrings && containsNumbers) {
console.log('Taulukossa vain lukuja. Lasketaan summa:');
return true;
} else if (containsStrings && containsNumbers) {
console.log('Taulukossa tekstiä ja numeroita. Yhdistetään sanat:');
return false;
} else {
console.log('Ei tekstiä tai numeroita');
return false;
}
}
function combineFunc(arr) {
return arr.join(' ') + (' ');
}
function sumFunc(arr) {
var sum = 0;
for (var i = 0; i < arr.length; i++) {
if (typeof arr[i] === 'number' && !isNaN(arr[i])) {
sum += arr[i];
}
}
return sum;
}
var array1 = ["Tämän", "taulukon", "alkiot", "muodostavat", "lauseen"];
var array2 = [3, 5, 7, 8, 9, 11, 13, 15, 16, 17, 19, 20];
var array3 = [5, "kertaa", 3, "on", 15];
function someFunction(arr, f1, f2, f3) {
if (!f1(arr)) {
console.log(f2(arr));
} else {
console.log(f3(arr));
}
}
someFunction(array1, checkFunc, combineFunc, sumFunc);
someFunction(array2, checkFunc, combineFunc, sumFunc);
someFunction(array3, checkFunc, combineFunc, sumFunc);