#javascript
#javascript
Вопрос:
Как мне умножить каждое число в массиве из позиции tabProsent[I]
слева? У меня не получается писать tabProsent[i].reduceRight(getSum)
.
function getSum(total, num) {
return total * num;
}
// Update the current slider year (each time you drag the slider handle)
slider.oninput = function() {
output.innerHTML = this.value;
var i;
for (i = 0; i < tabAar.length; i ) {
if (slider.value == tabAar[i]) {
output2.innerHTML=Math.round(startVerdi * tabProsent[i].reduceRight(getSum));
}
}
}
Комментарии:
1. Если у вас есть массив [0,1,2,3,4,5,6] и ваш tabProsent [I] равен 3, то ваш результат должен быть [0,1,2,6,12,20,30]. Это правильно?
2. неясно, каково значение tabProsent
3. если у меня есть array = [1,2,3,4,5], я хочу умножить каждое число из массива, например, из array [3] на левую вкладку [0]. и результат будет следующим 4*3*2*1=24 @ Саша
Ответ №1:
Это возможное решение. Примечание: я не знаю, каким должен быть результат, если индекс отрицательный, на самом деле тогда вы получаете результат 1. Если индекс больше длины массива, я уменьшаю pos до длины массива.
function getMult(arr, pos) {
if (pos>=arr.length)
pos = arr.length-1;
let res =1;
for (let i=0; i<= pos; i ) {
res *= arr[i];
}
return res;
}
console.log(getMult([1,2,3,4,5], 3));
Ответ №2:
Функциональный подход мог бы выглядеть следующим образом:
let multToLeft = (arr, num, m) => {
if (num < 0 || num > arr.length) throw new Error(`Invalid num ${num}`);
return [ ...arr.slice(0, num).map(v => v * m), ...arr.slice(num) ];
};
let examples = [
[ [ 1, 2, 3, 4, 5 ], 2, 10 ],
[ [ 1, 2, 3, 4, 5 ], 3, 20 ],
[ [ 1, 2, 3, 4, 5 ], 5, 11 ]
];
for (let [ arr, num, m ] of examples) {
console.log(`multToLeft(${JSON.stringify(arr)}, ${num}, ${m}) -> ${JSON.stringify(multToLeft(arr, num, m))}`);
}
Обратите внимание, что я работаю с num
вместо index
. Я выбрал, num
чтобы указать фактическое количество элементов слева от массива, которые умножаются. Это имеет больше смысла, чем работа с index
, поскольку применение умножения к нулевым элементам в массиве становится запутанным (поскольку предоставление 0
все равно означало бы применение умножения к первому элементу массива).