Finding javascript object properties

Because of the object in javascript, an associative map (HashMap in other programming languages) does the following code

for (var prop in object) {
    if (prop === someConcreteProperty) {
        // some decision
        break;
    }
}

slower anyway then search in the form of a dummy property like

if (typeof object.someConcreteProperty != 'undefined') {
    // some decision
}

Editing:

I am thinking about performance in code, for example:

for ( var prop in obj)
    if (obj[prop] === someAnonymousMethod) {
        // I need that property name for my need
        return obj.prop();
    }

will this search time be doubled for example

obj.prop()

or more?

Thanks.

+1
source share
3 answers

This can be verified empirically:

<script language="javascript">

alert("Initialising test object...");
var obj = new Object();
for (var i=0; i<1000000; i++) obj["prop"+i] = i;


alert("Initialised. Doing Test.");

var d1 = (new Date()).getTime();

needle = obj["prop"+(i-1)]; // last object
for (var prop in obj) {
    if (obj === needle) {
        // some decision
        break;
    }
}

var ms1 = ((new Date()).getTime()) - d1;

alert("Method 1 took "+ms1+"ms.")

var d2 = (new Date()).getTime();

if (typeof obj["prop"+(i-1)] != 'undefined') {
    // some decision
}

var ms2 = (new Date()).getTime() - d2;
alert("Method 2 took "+ms2+"ms.")

</script>

Method 1 takes MUCH more than method 2. This is not surprising, since all the calculations necessary to execute method 2 are included in method 1 plus MUCH.

+3
source

I assume for the first, what did you mean:

if ('prop' in obj) {
  // ...
}

.

:

var obj = { prop: undefined }; // a bit philosophical...
+2

, , JavaScript. JavaScript -.

. , , - .

, , .

, , 1 , , .

As a side note: many modern JavaScript engines (like Google V8) can optimize your code for better performance. In fact, I believe that objects in V8 are implemented as real classes. In this case, the search in memory is guaranteed to be constant, in contrast to the usual hash table search.

+1
source

Source: https://habr.com/ru/post/1616242/


All Articles