How do I get the difference between an associative array and a regular array in Javascript?
arrays, associative-array, javascript, loops
Solution
I assume your question just had a small typo in your declaration of `array2`. This is not a big deal.
Anyway, here is a bit of hack, but it gives you what you want:
array1 = [5, 1, 3];
array2 = {1: 15, 2: 20, 3: 10, 4: 5, 5: 50};
var result = {};
for (var i in array2) {
if (array1.indexOf(+i) < 0) {
result[i] = array2[i];
}
}
alert(JSON.stringify(result));
Working example
My hack is the `+i` in the `indexOf` call, because the properties of your "associative array" are strings, but your `array1` contains numbers. The unary `+` produces a number from a string. Kind of hackish but it is idiomatic an accepted JavaScript practice.
ADDENDUM
As RobG points out, `indexOf` is an ES5 method, so if your JavaScript engine is ES3 or below, you will need to implement `indexOf` on your own. An example of how to do this is at MDN. Alternatively, you can just do the equivalent of `indexOf` by searching the array on your own.
Problem
Is it possible to get the difference of an associative array and a regular array in Javascript? Ex. ``` array1 = [5, 1, 3]; array2 = [1 => 15, 2 => 20, 3 => 10, 4 => 5, 5 =>50 ]; ``` The difference would be... ``` diff = [2 => 20, 4=> 5]; ```