Я нахожусь в классе языков программирования, и на этой неделе мы работаем над JavaScript. Я запустил все тесты, кроме этого:
● powers › generates sequences of powers properly
expect(received).toEqual(expected) // deep equality
- Expected - 3
+ Received + 1
- Array [
- 1,
- ]
+ Array []
82 | expect(generatorToArray(powers, 2, -5)).toEqual([]);
83 | expect(generatorToArray(powers, 7, 0)).toEqual([]);
> 84 | expect(generatorToArray(powers, 3, 1)).toEqual([1]);
| ^
85 | expect(generatorToArray(powers, 2, 63)).toEqual([1, 2, 4, 8, 16, 32]);
86 | expect(generatorToArray(powers, 2, 64)).toEqual([1, 2, 4, 8, 16, 32, 64]);
87 | });
at Object.<anonymous> (h2.test.js:84:44)
console.log h2.js:41
[]
console.log h2.js:41
[]
console.log h2.js:41
[ 1 ]
Идея состоит в том, чтобы он возвращал все степени числа x до определенной точки y. Как вы можете видеть, console.log показывает массив как имеющий [1], в то время как он возвращается в тест как [] пустой. Вот исходный код:
function powers(x, y){
let count = 0;
let z = new Array();
while(Math.pow(x,count)<=y){
z.push(Math.pow(x,count));
count+=1;
}
console.log(z);
return z;
}
Я ломал голову, и я искренне понятия не имею, что может быть не так с этим. Пожалуйста, помогите!
РЕДАКТИРОВАТЬ: Вот функция generatorToArray, все тесты были предоставлены профессором, поэтому я не думаю, что мне разрешено их менять.
function generatorToArray(generator, ...args) {
const result = [];
generator(...args, (item) => result.push(item));
return result;
}