views:

84

answers:

2

Hi all,

sry for this imprecise topic name.

I am querying a dataset a lot of times so using ajax request would end up in tons of http requests.

For this reason I decided to use the json encode method to store this particular data set in my javascript code.

My php code looks like this: (no json.parse)

 echo 'var myDataset = ' . json_encode( $myDataset ) . ';' ;

Now here is my question: Which of the following approaches is better?

a)

 var myDataset = { '1' : { ... } , ... };

 console.log ( myDataset['1'] );

b)

 var myDataset = function( id ){ return ({ ... })[id] };

 console.log ( myDataset('1') );

Is there any difference in memory or cpu consumption?

Thanks

Jan

+2  A: 

A function only unnecessarily adds extra overhead. If the data is just to be accessed in flavor of object properties, then I'd go for way a).

BalusC
+4  A: 

The first method (a) is the fastest. In some situations using the . syntax can be faster, i.e. myDataset.a is faster than myDataset['a'] which is way faster than function(a){return myDataset[a];}. Using functions is very rarely fast. In (b) you do exactly the same as in (a), but you have another function call, and that will add a new closure to the heap, which takes up space and time.

Marius
You can't use the dot syntax with a numeric key. myDataset.1 will fail, it needs to be myDataset[1] or ['1'].
Alex JL
Right you are :) Fixed.
Marius