Все разобрался таки

Как обычно все просто

Код:
arrY0=[]
for (var i=0; i<4; i++) {
arrY0[i]=i
trace(typeof(arrY0[i])+" "+arrY0[i]+" arrY0")
}
arrYk=[]
for (var i=0; i<4; i++) {
id=Math.round(Math.random()*(arrY0.length-1))
trace("id "+id+" "+typeof(arrY0[id])+" "+arrY0[id])
arrYk.push(arrY0.splice(id, 1)[0])
trace(typeof(arrYk[i])+" "+arrYk[i]+" push "+arrYk.length)
}
Разница вот в чем:
было arrYk.push(arrY0.splice(id, 1))
стало arrYk.push(arrY0.splice(id, 1)[0])
т.е. splice возращает массив все-таки, хотя бы состоящий и из одного элемента, а это уже объект.
Теперь все нормуль:
number 0 arrY0
number 1 arrY0
number 2 arrY0
number 3 arrY0
id 1 number 1
number 1 push 1
id 2 number 3
number 3 push 2
id 0 number 0
number 0 push 3
id 0 number 2
number 2 push 4