php and js
php and js

Reputation: 971

Javascript is empty after filling with data

Javascript array is empty after filling with values

I tried this code:

var browserdata = new Array();
// Fill the array with values
browserdata["qqq"] = "zzz";
browserdata["rrr"] = 1;

console.log(browserdata);  // This shows an empty array

It should show { "qqq" => "zzz", "zzz" => 1 } Actual output is [] (empty array).

Upvotes: 2

Views: 629

Answers (5)

Slai
Slai

Reputation: 22876

Only the positive integer keys of array object are displayed by default, but the rest of the properties can still be accessed and seen in the Google Chrome console.

var arr = []
arr[1] = 1
arr[-1] = -1
arr[.1] = .1
arr.a = 'a'
arr['b'] = 'b'

console.log( arr ) // [undefined, 1]

console.log( arr.b ) // "b"

console.log( { ...arr } ) // { "1": 1, "-1": -1, "0.1": 0.1, "a": "a", "b": "b" }

Upvotes: 0

php and js
php and js

Reputation: 971

That solution works for me. Initializing with {} rather than [] or new Array() works. Thanks.

var browserdata = {};
// Fill the object with values
browserdata["qqq"] = "zzz";
browserdata["rrr"] = 1;

console.log(browserdata); 

Upvotes: 0

abhay
abhay

Reputation: 642

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

https://javascript.info/array

If new Array() is called with a single argument which is a number, then it creates an array without items, but with the given length.

It’s rarely used, because square brackets [] are shorter. Also there’s a tricky feature with it lets see.

var arr = new Array(2); // will it create an array of [2] ?
console.log( arr[0] ); // undefined! no elements.
console.log( arr.length ); // length 2

 var browserdata = new Array();
 browserdata[0] = "zzz";
 browserdata[1] = 1;   
 console.log(browserdata);
 console.log(browserdata.length);

Upvotes: 0

Faizal Hussain
Faizal Hussain

Reputation: 1581

It will never return empty as there are data in the array, with your code it will return an output [qqq: "zzz", rrr: 1] If you want to get an output like { "qqq" => "zzz", "zzz" => 1 } , You should use objects .Objects are nothing but a grouping of data, for example, consider a student array with different data sets. here you could define individual data or data sets like

student['name'] = john ; student['mark'] = 20;

OR

students =[{name : john , mark :20} ,{name : rick, mark :20} ]

Upvotes: 0

Ankit Agarwal
Ankit Agarwal

Reputation: 30739

You need to use Object data type instead of Array. Using object structure, you can assign properties to it and corresponding value for that property to get the desired output as { "qqq" => "zzz", "zzz" => 1 }

var browserdata = {};
// Fill the object with values
browserdata["qqq"] = "zzz";
browserdata["rrr"] = 1;

console.log(browserdata); 

You can also use the another approach, to assign the property at the time object is declared:

var browserdata = {
  'qqq': 'zzz',
  'rrr': 1
};
console.log(browserdata); 

Upvotes: 2

Related Questions