1

I have some code that produces undefined values in an array making no sense.

here is the code:

gcc_py = 8;
gcc_pyd = 12;
var aci = 360/gcc_pyd;
var parcalar = new Array();
var renkler = new Array();

for(var i = 0;i<gcc_pyd;i++){   
    parcalar.push(aci);
    renkler.push('#000');
}

console.log(parcalar);
console.log(renkler);

console.log(parcalar) outputs this:

[ Object , Object , Object , Object , Object , Object , Object , Object , Object , Object , undefined × 2]

do you have any idea for the undefined values in the array?

Yunus Eren Güzel
  • 3,018
  • 11
  • 36
  • 63

3 Answers3

2

I guess you are changing the arrays afterwards. The console will reflect these changes, e.g. then showing objects instead of numbers and strings. Also, when deleting properties from an array (via delete, see Deleting array elements in JavaScript - delete vs splice), they will still show up as initialised but empty (see What is "undefined x 1" in JavaScript?).

Community
  • 1
  • 1
Bergi
  • 630,263
  • 148
  • 957
  • 1,375
  • yes, after these lines there is a function call in which these arrays are passed. The function changes the array. Thank you for the answer. Do you have further information about this concept may be a documentation, link, etc? – Yunus Eren Güzel Jun 21 '12 at 18:28
  • 1
    documentation about what? For [console](http://getfirebug.com/wiki/index.php/Console_API) you'll find http://getfirebug.com/logging or http://patik.com/blog/complete-cross-browser-console-log/ helpful. – Bergi Jun 21 '12 at 18:52
0

The output for me shows

[30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]

["#000", "#000", "#000", "#000", "#000", "#000", "#000", "#000", "#000", "#000", "#000", "#000"]

Maybe you've added some .prototype stuff to Array somewhere else in the code?

sachleen
  • 30,730
  • 8
  • 78
  • 73
demiurg
  • 108
  • 10
0

When I run the same configuration:

<script>
  var gcc_py = 8;
  var gcc_pyd = 12;
  var aci = 360 / gcc_pyd;
  var parcalar = new Array();
  var renkler = new Array();

  for(var i = 0; i < gcc_pyd; i++){
      parcalar.push(aci);
      renkler.push('#000');
  }

  console.log(parcalar);
  console.log(renkler);
</script>

I get:

[30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]
["#000", "#000", "#000", "#000", "#000", "#000", "#000", "#000", "#000", "#000", "#000", "#000"]

not sure what you're seeing.

JCSickmeyer
  • 189
  • 1
  • 1
  • 8