2014-10-22 5 views
2

나는 비슷한 몇 가지 유사한 답변을 검색하여 발견했습니다.JSON이 포함 된 연관 배열에서 값에서 키 찾기

배열이 SongList (간결성을 위해 2 가지 항목을 보여줍니다 ...) - 첫 번째 쌍이 키이고 두 번째 쌍이 일부 JSON입니다.

SongList={ 
    song_1:{title:"title of first song",artist:"the artist",mp3:"http://mysite/song1.mp3"}, 
    song_2:{title:"title of second song",artist:"the artist",mp3:"http://mysite/song2mp3"} 
    ... 
}; 
내가 값에 title 주어진 키 ( song_1 또는 song_2를) 검색 할 수 있도록하고 싶습니다

.

는 내가 i 항목의 임시 배열을 통해 반복됩니다

,이 배열의 각 항목은 SongList에 일치하는 것 나는 최종 배열의 키 (song_1, song_2)를 저장한다.

+1

문제가 무엇인지 잘 모르겠습니다. "목록"의 키/값 쌍을 반복하고, 제목을 확인하고, 일치하는 경우 결과 배열로 푸시합니다. –

+0

'SongList'의 속성을 반복하고'title'을 비교하십시오. –

+0

같은 제목의 다른 노래가있을 수 있습니까? – Oriol

답변

1

모두에게 감사드립니다. 배열 v. 객체에 대한 이해는 분명히 Google-Fu를 방해하는 문제였습니다.

(는 songList 개체가 위의 질문에 설명되어 있습니다)

이 내가 플레이리스트는 songList의 키를 저장할에 도착 궁극적 기능은 다음과 같습니다 나는 내가 마지막으로 여기지도를 통해 도착 대답을 게시 확인 희망 :

$("#save_playlist_as_keys").click(function() { 
var keys = [] 
for(var i=0; i<myPlaylist.playlist.length; i++){ 
    var playItem = (myPlaylist.playlist[i].title); //this returns the names of the tracks 
    for (var k in SongList){ 
     if(SongList[k].title == playItem) keys.push(k);//this matches track name to keys 
    } 
} 
localStorage.setItem('storedKeys',keys); 
}); 

이것은 내가 지금하고 싶은 것 같습니다.

3

개체가 더 많은 개체가있는 배열이 없습니다. 사용 for in

function findTitle(title) { 
    for (var key in SongList) { 
     if (SongList[key].title == title) return key; 
    } 
    return false; 
} 

그런 다음 호출하십시오!

findTitle("title of first song"); //returns "song_1" 
findTitle("BNOT MEEEEEE"); //returns false 
+0

감사의 말로, 리턴 키를 얻지는 못했지만 타이틀 라인과 일치하는 키는 엄청나게 도움이되었습니다. 나는 성냥을 배열에 밀어 넣는 것을 끝내었다. – dijon

+1

@dijon - 아, 내가 나중에 하나 이상의 일치에 대한 수용 할 수 편집 할 수 있습니다 - 나중에 배열 – tymeJV

+0

감사하지만 내 경우에는 하나 이상의 일치가 필요하지 않습니다 그리고 난 배열있어 생각합니다 위의 내 대답에서 알아 냈어. – dijon

1

다음은 예입니다. c를 예상대로

var one = { 
a: {b:"MightyMouse", d:2}, 
b: {b:"MickeyMouse", d:4}, 
c: {b:"Superman", d:6} 
}; 

for (outerkey in one) { 
    if (one[outerkey].b === "Superman") { 
     console.log ("Outerkey = " + outerkey); 
    } 
} 

이 인쇄, 당신은 Superman 찾고있는 가정.