我对 JavaScript 的学习还很陌生,我正在完成 Odin 项目的一些练习。我被困在计算器的一个部分,该部分应该对所有参数求和,但如果您使用数组调用该函数,输出会发生变化。我的代码如下:
const sum = function(...numbers) {
let result = 0;
for (let each of numbers){
result += each};
return result;
};
如果我像这样调用该函数,效果会很完美:
sum(7,11)
并返回 18
但是,其中一项检查是需要将参数作为数组输入:
test('计算两个数字数组的和', () => { Expect(calculator.sum([7,11])).toBe(18);
因此,当它调用这样的函数 sum([7,11])
时,它会返回 07,11
并且还将其作为字符串返回,因此它不会通过这项检查。我很确定解决方案可能很简单,但我无法找到问题所在。
const sum = function(...numbers) {
let result = 0;
for (let each of numbers){
result += each};
return result;
};
console.log(sum(7,11))
console.log(sum([7,11]))
最佳答案
原因是 ...numbers
表示数组,并且您传递了像 [7,11]
这样的参数,因此它是一个嵌套数组,在本例中,您需要使用numbers[0]
代替
您可以引用how-to-check-if-array-is-multidimensional-jquery以获得更多详细信息。
const sum = function(...numbers) {
let result = 0;
let isSubArray = Array.isArray(numbers[0]);
let data = isSubArray ? numbers[0]:numbers;
for (let each of data){
result += each
};
return result;
};
console.log(sum([7,11]))
console.log(sum(7,11))
关于javascript - 计算器练习未返回正确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73904703/