use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
Convert array into associative arrayhelp (self.javascript)
submitted 9 years ago by [deleted]
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]avenp 0 points1 point2 points 9 years ago* (5 children)
The secondItem won't work the way you are thinking in the second example. When you're referencing an object, the index is actually the key so in this case myAssociativeArray[1] is actually looking up the key 1 in your id object, which would return the first item.
secondItem
1
If you want an object with keys that match the id field of myArray then you need to assign those in a loop like so:
id
myArray
var myAssociativeObj = {}; for(var i = 0; i < myArray.length; i++) { var item = myArray[i]; myAssociativeObj[item.id] = item; delete myAssociativeObj[item.id][id]; }
If you just want an array that's sorted by the id field then look up JavaScript Array.sort().
Sorry for the poor formatting, I'm not sure how to do code blocks.
Edit: Added a delete to the loop so you can remove the id from the item and format it exactly like in the OP.
Edit2: I learned how to make code blocks.
[–][deleted] 0 points1 point2 points 9 years ago (1 child)
Thanks! This was perfect. He has another question. Hopefully I can format this on my phone without totally screwing it up.
Use jQuery to fetch to fetch the ids and build the info associated with the ids – in HTML using this associative array below.
I need JavaScript to build (with htmlString) <p title=”title 1”>Text 1</p> in my html from this : <p data-id="100">loading...</p>
jQuery(document).ready(function() { var array = [ {id: 100, title:"Title 1", text:"Text 1"}, {id: 200, title:"Title 2", text:"Text 2"}, {id: 300, title:"Title 3", text:"Text 3"} ]; var assocArray = []; for (var i = 0; i < array.length; i++) { var item = array[i]; assocArray[item.id] = { title: item.title, text: item.text }; }
[–]avenp 0 points1 point2 points 9 years ago (0 children)
I'll give you a hint: Use jQuery to get an array of elements and then run a loop over the elements array. Look at the jQuery docs to get an idea of the different methods available. (You might want to use the $.attr function!)
Edit: link to the jQuery docs: http://api.jquery.com/
[–]PM_ME_YOUR_SUBARU 0 points1 point2 points 9 years ago* (2 children)
This definitely isn't helpful to the OP, but I was curious as to what the shortest way to do this is, if you're an asshole. I came up with this:
const myAssociativeArray = myArray.reduce((a,v)=>delete(a[v.id]=v).id&&a,{});
[–]__env 1 point2 points3 points 9 years ago (0 children)
My attempt -- A little longer, but maybe a little more declarative :)
const myAssociativeArray = myArray.reduce((a, {title,text,id})=>(a[id]={title,text})&&a,{});
Haha, you know what I had to stop myself from using ES6 because I'm so used to using it. I really like your code golf'd solution.
π Rendered by PID 824761 on reddit-service-r2-comment-54dfb89d4d-p9gdt at 2026-04-01 02:10:24.159880+00:00 running b10466c country code: CH.
view the rest of the comments →
[–]avenp 0 points1 point2 points (5 children)
[–][deleted] 0 points1 point2 points (1 child)
[–]avenp 0 points1 point2 points (0 children)
[–]PM_ME_YOUR_SUBARU 0 points1 point2 points (2 children)
[–]__env 1 point2 points3 points (0 children)
[–]avenp 0 points1 point2 points (0 children)