.shift() работает. Ошибки в другом:
...
оператор расширения (spread syntax) работает не в объявлении функции, а в её вызове; Upd. в объявлении функции троеточие тоже возможно и называется «оставшиеся параметры» (rest parameters) и, в отличие от arguments
в моём ответе (массивоподобный объект) является полноценным массивом переданных параметров. Всё это часть нового синтакса ECMAScript 6 и поддерживается не всеми браузерами.
- в цикле вы перебираете включая
i = len
, но в массиве, скажем, длиной 3 нет элемента с индексом 3. Самый большой индекс это длина – 1 = 2
: [0, 1, 2]
- На вход подаются массивы, неизвестное их количество. На выход функция может вернуть только одно значение. Пусть это будет массив массивов.
Традиционный вариант, работающий везде:
function changeCollection() {
var result = [], i;
for( i = 0; i < arguments.length; i++) {
arguments[i].shift();
result.push( arguments[i]);
}
return result;
}
var args = [ [1,2,3], [4,5,6]];
changeCollection( ...args) // эксперимент не для всех браузеров [[2,3],[5,6]]
changeCollection( [7,8,9], ['a','b','c']) // работает везде [[8,9],["b","c"]]
Upd. как вариант на ES6:
function changeCollection(...arr) {
for( let i = 0; i < arr.length; i++) {
arr[i].shift();
}
return arr;
}