У меня есть функция, которая принимает массив чисел в качестве аргумента.Я хочу вернуть новый массив с произведениями каждого числа, кроме числа с текущим индексом.
Например, если у arr
было 5 индексов, и мы создавали значение для индекса 1, чиселпри индексах 0, 2, 3 и 4 умножается.
Вот код, который я написал:
function getProducts(arr) {
let products = [];
for(let i = 0; i < arr.length; i++) {
let product = 0;
for(let value in arr.values()) {
if(value != arr[i]) {
product *= value;
}
}
products.push(product);
}
return products;
}
getProducts([1, 7, 3, 4]);
// Output ➞ [0, 0, 0, 0]
// Expected output ➞ [84, 12, 28, 21]
Как видите, требуемый вывод не актуализируется.Я провел некоторые эксперименты, и оказалось, что второй цикл for действительно никогда не запускается, так как любой код, помещенный в блок, не выполняется:
function getProducts(arr) {
let products = [];
for(let i = 0; i < arr.length; i++) {
let product = 0;
for(let value in arr.values()) {
console.log('hello!');
if(value != arr[i]) {
product *= value;
}
}
products.push(product);
}
return products;
}
getProducts([1, 7, 3, 4]);
// Output ➞
// Expected Output ➞ 'hello!'
Что не так с моим кодом?