changeCollection как этой главной функции указать то что будет принимать сколько угодное количество массивов , а последним будет обработчик ?
В современном js вот так:
changeCollection(...arrays, handler)
В arrays будет массив с переданными массивами.
Если по классике, то вот так:
function changeCollection() {
var handler = arguments[arguments.length - 1];
for (var i = 0; i < arguments.length - 1; i++) {
var array = arguments[i];
handler(array);
}
}
Кстати, обратите внимание, что массивы в js передаются по ссылке, поэтому изменяя переданные аргументы вы изменяете и оригиналы:
function changeCollection() {
var handler = arguments[arguments.length - 1];
for (var i = 0; i < arguments.length - 1; i++) {
var array = arguments[i];
handler(array);
}
}
function deleteFunc(array) {
array.shift();
}
var one = [1 ,2 ,3];
var two = ['b', 'c'];
changeCollection(one, two, deleteFunc)
console.log(one, two); // [2, 3] ['c']
Если вас такое поведение не устраивает, нужно делать копии и изменять и возвращать их. Для этого лучше воспользоваться готовыми библиотеками и не писать свой велосипед. В современном js, опять же, можно воспользоваться встроенными средствами:
const clone = [...original];
. Но если у вас внутри массивов не примитивы и вы изменяете элементы, то нужно делать глубокое копирование.