Thanks Jimmy. Very good & sound advice. it's something I usually do but I quickly threw this code together. My bigger focus was to determine if there's a better way of traversing the JSON data to get to the specific note & chord, perhaps limiting the amount of loops needed to do so.
Rey On Sun, Sep 18, 2011 at 10:51 AM, Jimmy Chan <[email protected]> wrote: > The benefit of arrays is that you'll ensure order, but in your case, > there is no need to ensure order. > ( Not sure if JSON objects (hashes) ensure order... do all browsers > keep order? ) > > > On the topic of optimization, you don't need to evaluate the length of > the array every time so > for (var i=0; i < myNotes.length; i++){ ... } > can be rewritten as > for (var i=0, _len = myNotes.length; i < _len; i++){ ... } > > it's a good habit. > jimmy > > > On Sep 17, 9:51 pm, Rey Bango <[email protected]> wrote: > > Ah good idea! > > > > On Sat, Sep 17, 2011 at 9:34 PM, Michal Kuklis <[email protected] > >wrote: > > > > > > > > > > > > > > > > > Hey Rey, one way to improve it would be to simplify your JSON structure > a > > > bit for example: > > > var notes = {"A": {"maj7": [0, 3, 2, 0, 1, 2], "min": [0, 3, 2, 0, 1, > 2]}, > > > "B": {"min": [0, 3, 2, 0, 1, 2]}}; > > > > > this way you could just do: > > > > > function getChord( myNotes, theNote, theChord ) { > > > return myNotes[theNote][theChord]; > > > } > > > > > Michal > > > > > On 9/18/11 12:19 AM, Rey Bango wrote: > > > > >> Hey guys, > > > > >> The code below loops over some JSON data. It' simple in that it looks > for > > >> a specific note and then a specific chord within the note. It then > returns > > >> the strings. > > > > >> I'm using for loops to handle it but wanted to ask if there was a > better, > > >> faster or more efficient way to do it. > > > > >> Thoughts? > > > > >> Rey... > > > > >> function getChord( myNotes, theNote, theChord ) { > > >> var theChords = ''; > > > > >> for (var i=0; i < myNotes.length; i++) { > > >> if (myNotes[i].note == theNote) { > > >> theChords = myNotes[i].chords; > > >> for (var i=0; i < theChords.length; i++) { > > >> if (theChords[i].chord == theChord) { > > >> return theChords[i].strings; > > >> }; > > > > >> }; > > > > >> }; > > > > >> }; > > > > >> } > > > > >> var notes= [{ > > >> "note": "A", > > >> "chords": [ > > >> { > > >> "chord": "maj7", > > >> "strings": { > > >> "1": 0, > > >> "2": 3, > > >> "3": 2, > > >> "4": 0, > > >> "5": 1, > > >> "6": 2 > > >> } > > >> }, > > >> { > > >> "chord": "min", > > >> "strings": { > > >> "1": 0, > > >> "2": 3, > > >> "3": 2, > > >> "4": 0, > > >> "5": 1, > > >> "6": 2 > > >> } > > >> } > > >> ] > > >> },{ > > >> "note": "B", > > >> "chords": [ > > >> { > > >> "chord": "maj7", > > >> "strings": { > > >> "1": 0, > > >> "2": 3, > > >> "3": 2, > > >> "4": 0, > > >> "5": 1, > > >> "6": 2 > > >> } > > >> }, > > >> { > > >> "chord": "min", > > >> "strings": { > > >> "1": 0, > > >> "2": 3, > > >> "3": 2, > > >> "4": 0, > > >> "5": 1, > > >> "6": 2 > > >> } > > >> } > > >> ] > > >> }]; > > > > >> chordStrings = getChord( notes, "A", "maj7" ); > > > > >> document.write( chordStrings ); > > > > >> -- > > >> To view archived discussions from the original JSMentors Mailman list: > > >> http://www.mail-archive.com/**[email protected]/< > http://www.mail-archive.com/[email protected]/> > > > > >> To search via a non-Google archive, visit here: > > >>http://www.mail-archive.com/**[email protected]/< > http://www.mail-archive.com/[email protected]/> > > > > >> To unsubscribe from this group, send email to > > >> jsmentors+unsubscribe@**googlegroups.com > <jsmentors%2Bunsubscribe@googlegrou ps.com> > > > > > -- > > > To view archived discussions from the original JSMentors Mailman list: > > > http://www.mail-archive.com/**[email protected]/< > http://www.mail-archive.com/[email protected]/> > > > > > To search via a non-Google archive, visit here: > > >http://www.mail-archive.com/**[email protected]/< > http://www.mail-archive.com/[email protected]/> > > > > > To unsubscribe from this group, send email to > > > jsmentors+unsubscribe@**googlegroups.com > <jsmentors%2Bunsubscribe@googlegrou ps.com> > > -- > To view archived discussions from the original JSMentors Mailman list: > http://www.mail-archive.com/[email protected]/ > > To search via a non-Google archive, visit here: > http://www.mail-archive.com/[email protected]/ > > To unsubscribe from this group, send email to > [email protected] > -- To view archived discussions from the original JSMentors Mailman list: http://www.mail-archive.com/[email protected]/ To search via a non-Google archive, visit here: http://www.mail-archive.com/[email protected]/ To unsubscribe from this group, send email to [email protected]
