У вас есть несколько проблем с вашим кодом. В настоящий момент multiplesOf
принимает только 1 аргумент, когда их должно быть два, то есть массив numbers
и один number
Ваша другая проблема заключается в том, что вы не сохраняете массив найденных кратных значений, вместо этого вы устанавливаете переменную для найденных кратных значений и перезаписываетесь при обнаружении нового кратного числа (таким образом, оставляя вас с последним найденным кратным числом). в массиве). Вместо этого вы хотите изменить переменную multiples
на массив. Таким образом, вы можете push
каждый кратный найденный в этом массиве.
См. Рабочий пример ниже (см. Комментарии к коду для изменений):
function multiplesOf(numbers, number) { // add second argument
var multiples = []; // change to array (so that we can store multiple numbers - not just one multiple)
for (var i = 0; i < numbers.length; i++) {
if (numbers[i] % number === 0) { // divide by the number
multiples.push(numbers[i]); // add the current multiple found to the multiples array
}
}
return multiples;
}
console.log(multiplesOf([4, 5, 6, 7, 8], 2)); // Output: [4, 6, 8]
Или, если вы хотите использовать функцию более высокого порядка, вы также можете использовать .filter
, чтобы получить новый массив. .filter
принимает функцию в качестве первого аргумента, которая принимает element
в качестве аргумента. Он сохранит любой из элементов, которые вы вернете true
, в вашем новом массиве:
const multiplesOf = (numbers, number) => numbers.filter(n => !(n % number));
console.log(multiplesOf([4, 5, 6, 7, 8], 2)); // [4, 6, 8]