Why does console.log wrongly print an empty array?
console.log, firefox, javascript
Solution
`console.log` shows live data, not a snapshot of the object at the time you run it.
Since you `splice` all the data out of the array, it is empty almost as soon as you log it.
Stringify or deep copy the array if you want to log a snapshot of it.
Problem
I use Firefox. This code logs `[]`. ``` var log = console.log; function new_comb(aComb) { var res = []; log(aComb); // <- This is the line for (var p in aComb) { var peg = aComb[p]; var current = peg[peg.length - 1]; for (var i = 0; i < aComb.length; i++) { if (i == p) continue; if (current > aComb[i][aComb[i].length - 1]) continue; var tmp = aComb.splice(0); tmp[i].push(current); tmp[p].pop(); res.push(tmp); } } return res; } var comb = [ [3, 1], [9, 2], [15, 0]]; var res = new_comb(comb); ``` This code logs the correct value. ``` var log = console.log; function new_comb(aComb) { var res = []; log(aComb); // <- This is the line // note that I comment this out. /*for (var p in aComb) { var peg = aComb[p]; var current = peg[peg.length - 1]; for (var i = 0; i < aComb.length; i++) { if (i == p) continue; if (current > aComb[i][aComb[i].length - 1]) continue; var tmp = aComb.splice(0); tmp[i].push(current); tmp[p].pop(); res.push(tmp); } }*/ return res; } var comb = [ [3, 1], [9, 2], [15, 0]]; var res = new_comb(comb); ``` Why is this happening?