Cбор части аргументов функции, оператор rest
Как решить такую задачку. Тут надо использовать оператор (...rest), но как его применить?
Функция findMatches() принимает произвольное количество аргументов. Первым аргументом всегда будет массив чисел, а остальные аргументы будут просто числами.
Дополни код функции так, чтобы она возвращала новый массив matches, в котором будут только те аргументы, начиная со второго, которые есть в массиве первого аргумента.
Например, findMatches([1, 2, 3, 4, 5], 1, 8, 2, 7) должна вернуть массив [1, 2], потому что только они есть в массиве первого аргумента.
Вызов findMatches([4, 89, 17, 36, 2], 8, 17, 89, 27, 2) возвращает [17, 89, 2]
Вызов findMatches([10, 24, 41, 6, 9, 19], 24, 11, 9, 23, 41) возвращает [24, 9, 41]
Вызов findMatches([63, 11, 8, 29], 4, 7, 16) возвращает []
function findMatches() {
const matches = [];
return matches;
}
console.log(findMatches([1, 2, 3, 4, 5], 1, 8, 2, 7))
console.log(findMatches([4, 89, 17, 36, 2], 8, 17, 89, 27, 2))
Ответы (1 шт):
Действия:
- Раз, первый аргумент - массив, а последующие - переменное количество аргументов, то второй аргумент объявляем через
... - Остается перебрать второй аргумент, оставив только те элементы, которые есть в первом
Решение можно сократить, попробуйте это самостоятельно, используя функцию filter
Пример:
function findMatches(arr1, ...arr2) {
const matches = [];
for (let x of arr2) {
if (arr1.includes(x)) {
matches.push(x);
}
}
return matches;
}
console.log(findMatches([1, 2, 3, 4, 5], 1, 8, 2, 7))
console.log(findMatches([4, 89, 17, 36, 2], 8, 17, 89, 27, 2))