Saturday, May 11, 2024
 Popular · Latest · Hot · Upcoming
130
rated 0 times [  136] [ 6]  / answers: 1 / hits: 29379  / 10 Years ago, tue, october 14, 2014, 12:00:00

What is the performance difference between retrieving the value by key in a JavaScript object vs iterating over an array of individual JavaScript objects?



In my case, I have a JavaScript object containing user information where the keys are the user's IDs and the values are each user's information.



The reason I ask this is because I would like to use the angular-ui-select module to select users, but I can't use that module with a Javascript object - it requires an array.



How much, if anything, am I sacrificing by switching from a lookup by key, to a lookup by iteration?



By key:



var user = users[id];


By iteration



var user;

for (var i = 0; i < users.length; i ++) {
if (users[i].id == id) {
user = users[i]; break;
}
}

More From » javascript

 Answers
36

The answer to this is browser dependent, however, there are a few performance tests on jsperf.com on this matter. It also comes down to the size of your data. Generally it is faster to use object key value pairs when you have large amounts of data. For small datasets, arrays can be faster.



Array search will have different performance dependent on where in the array your target item exist. Object search will have a more consistent search performance as keys doesn't have a specific order.



Also looping through arrays are faster than looping through keys, so if you plan on doing operations on all items, it can be wise to put them in an array. In some of my project I do both, since I need to do bulk operations and fast lookup from identifiers.



A test:



http://jsben.ch/#/Y9jDP


[#69130] Saturday, October 11, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
asalewisc

Total Points: 742
Total Questions: 98
Total Answers: 112

Location: Jordan
Member since Wed, Jun 17, 2020
4 Years ago
;