views:

396

answers:

5

Here's the story... I have a jQuery function that does something, this function is referenced very regularly. One of the input parameters is an array, this array data is hard coded and thus I want to pass the data like this: (this is how I would do it using PHP)

myFunction(Array("url"=>"abc.com","example"=>"hello_world"));

Instead of

$arr=Array("url"=>"abc.com","example"=>"hello_world");
myFunction($arr);

So how do I achieve this with my jQuery function, I want this to be a one liner if possible.

Edit

Maybe my example was a bit misleading, take a look at the array indexes again. The array I am sending is an associative array.

In short I do not want any variables before my function, I want the array to be hardcoded directly in the function parameter as suggested in the first example I gave.

:-)

A: 

Here is example if this is what you mean:

    var arr = [ "one", "two", "three", "four", "five" ];

    jQuery.each(arr, function() {
          $("#" + this).text("Mine is " + this + ".");
           return (this != "three"); // will stop running after "three"
       });

//Source http://api.jquery.com/jQuery.each/
c0mrade
Thanks for your answer, unfortunately I think my question was slightly misleading and thus this isn't relevant to my problem. Thanks any way though :)
ILMV
A: 

I'm not entirely sure what you're asking here, but I'll give answering it a shot. If you're referencing this array in more than one place then it's probably best to define it as a constant first:

    ARRAY = ['a', 'b', 'c']
    myFunction(ARRAY);
    myFunction2(ARRAY);

If your only referencing this hard-coded array once, then pass it into the jQuery function as an array literal declared in the function call:

    myFunction(['a', 'b', 'c']);
bobthabuilda
Hi there, your last example is almost exactly what I want to do, I don't want any variables before my function, but it has to be an associative array. Thanks again :)
ILMV
+1  A: 

Look into JSON formatting for your array...

somefunction({'key1':'value', 'key2':'value'});
David
Thanks for your answer, I tried this `func(['key1':'value', 'key2':'value']);` but get this error `missing ] after element list[Break on this error] getElementContents(['key1':'value', 'key2':'value']); ` :S
ILMV
I fixed it, I had the wrong brackets
David
This worked great but bobthabuilda got there first. Many thanks for your help :)
ILMV
Just FYI, that's not valid JSON. It's a valid JavaScript object literal, but JSON is much stricter and requires double quotes (`"`) for key names and strings.
gnarf
+3  A: 

I reread your edited question, and your answer is in the javascript object, much like dictionaries or hashes in other languages:

    { first_key: '1', second_key: '2', third_key: '3' };

And for your callback, just pass it in as a literal declared on the spot:

    myFunction({ first_key: '1', second_key: '2', third_key: '3'});
bobthabuilda
A: 

JavaScript does not have associative arrays. You can probably get what you are asking for with a combination of regular arrays and objects:

var foo = [
    {
        url: "abc.com",
        example: "hello_world"
    },
    {
        url: "example.net",
        example: "example"
    }
];

There is a data format called JSON that uses JavaScript syntax. Since you seem to be using PHP and PHP has builtin functions to generate JSON (find json_encode() in the PHP manual) it can be a very simple task: encode your PHP data structure as JSON and use it as is from JavaScript.

Álvaro G. Vicario