Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

javascript using numeric array as associate array

In Javascript, I have an array of objects, users, such that users[1].name would give me the name of that user.

I want to use the ID of that user as the index instead of the ever increasing counter. For example, I can initiate the first user as users[45].

However, I found that once I do users[45], javascript would turn it into a numeric array, such that when I do users.length, I get 46.

Is there anyway to force it to treat the number as string in this case. (" " doesn't work)?

like image 819
William Sham Avatar asked Feb 22 '26 10:02

William Sham


1 Answers

You cannot use arrays for this sort of function in JavaScript — for more information, see "Javascript Does Not Support Associative Arrays."

Make sure you initialize the users variable as an Object instead. In this object you can store the arbitrary, non-sequential keys.

var users = new Object();

// or, more conveniently:
var users = {};

users[45] = { name: 'John Doe' };

To get the number of users in the object, here's a function stolen from this SO answer:

Object.size = function(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};

var users = {};
// add users..

alert(Object.size(users));
like image 71
Jon Gauthier Avatar answered Feb 24 '26 00:02

Jon Gauthier



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!