Array of 'associative array' in (node)js

14,571

Solution 1

Javascript does not have associative arrays, only plain objects:

var myObj = {
    myProp: 'test',
    mySecondProp: 'tester'
};

alert(myObj['myProp']); // alerts 'test'

myObj.myThirdProp = 'testing'; // still works

for (var i in myObj) {
    if (!myObj.hasOwnProperty(i)) continue; // safety!
    alert(myObj[i]);
}
// will alert all 3 the props

For converting PHP arrays to javascript use json_encode

If you want to play it safe though, you would want to quote the properties as well, as reserved keywords will make your construct fail in some browsers, or will not be accepted by some compression systems:

var obj1 = {
    function: 'boss',       // unsafe
    'function': 'employee'  // safe
};

console.log(obj1.function);    // unsafe
console.log(obj1['function']); // safe

Solution 2

Simply create a generic object with your configurations:

var config = {
   test: {
      something: 'http://something.com/web/stats_data2.php',
      anothersomething: 'http://anothersomething.com/web/stats_data2.php'
   }
};

Then you can use it this way:

var something = config.test.something;

or

var something = config.test['something'];

or

var something = config['test']['something'];

There is not so much to test but if you want to you can use tools like Firebug or Chrome Developer Tools.

Solution 3

Using chrome browser, open console default, the short cut key is F12. You can test your code in the console.

Share:
14,571
DrakaSAN
Author by

DrakaSAN

Try to type "about:robots" in Firefox url bar

Updated on August 25, 2022

Comments

  • DrakaSAN
    DrakaSAN over 1 year

    I have this code in php to translate in js (node to be precise)

    $config['test'] = array(
         "something" => "http://something.com/web/stats_data2.php"
        ,"somethingelse" =>"http://somethingelse.com/web/stats_data2.php"
        ,"anothersomething" =>"http://anothersomething.com/web/stats_data2.php"
    );
    

    So I started to write this:

    config.test = [
          something = 'http://something.com/web/stats_data2.php'
        , somethingelse = 'http://somethingelse.com/web/stats_data2.php'
        , anothersomething = 'http://anothersomething.com/web/stats_data2.php']
    

    But I m not sure if it s not supposed to be writed like this instead:

    config.test.something = 'http://something.com/web/stats_data2.php';
    config.test.something = 'http://somethingelse.com/web/stats_data2.php';
    config.test.anothersomething = 'http://anothersomething.com/web/stats_data2.php';
    

    The goal is, if I do console.log(config.test.['something']);, to have the link in the output.

    Is there any way to test it without server (since I don t have any before tomorrow), or is my syntax good?

  • NDM
    NDM over 10 years
    since he is doing a console.log, I guess he known this.
  • DrakaSAN
    DrakaSAN over 10 years
    console.log is a habit of node.js, I m usually doing app with it, not webpages, so console.log write in the linux console, not the browser. (And I never use chrome browser also). And it s good to know I can use chrome to test without server. (Even if I ll probably use Firebug like letiagoalves said).
  • srain
    srain over 10 years
    console.log is defined in chrome v8, also in node.js and chrome web js.