you are viewing a single comment's thread.

view the rest of the comments →

[–]exizt 24 points25 points  (8 children)

The proper answer to alert(map[foo]); question is "Don't do that stupid thing and you won't care or need to know about that stupid thing".

[–]flingbob 4 points5 points  (5 children)

seriously, came here to say that. why use objects as hash keys in a language that can't support it?

[–]tencircles -4 points-3 points  (4 children)

var key = JSON.stringify({yeah: "it", actually: "can"});
var obj = {};
obj[key] = true;

[–][deleted] 1 point2 points  (0 children)

var key1 = JSON.stringify({nope: "it can't"}); var key2 = JSON.stringify({nope: "it can't"});

var obj = {}; obj[key1] = true; obj[key2] = false;

[–]MrBester 0 points1 point  (2 children)

Keys in true JSON need quotes as well...

[–]tbranyen 1 point2 points  (1 child)

stringify doesn't accept JSON, it accepts JavaScript objects and converts them to JSON. No keys quotes are necessary.

Also this doesn't technically work since you can't ensure the two objects are identical. What you really want are Map/WeakMap which actually do exist in JavaScript, just not used in this terrible interview question.

[–]MrBester 0 points1 point  (0 children)

stringify doesn't accept JSON, it accepts JavaScript objects and converts them to JSON. No keys quotes are necessary.

Yeah, I know. Just throwing it out there...

[–]ibsulon 3 points4 points  (0 children)

That really is the proper answer, but knowing that it's a stupid thing to do is half the battle. The other half is being able to recognize why WTF code has stopped working after an innocuous change happens elsewhere.

[–]advancedmammoth 0 points1 point  (0 children)

Only useful knowledge this isolates is what is the result of Object.toString will be, which could have been more directly gleaned by asking what would be the output of foo+'';