2014-08-30 3 views
0

참고 :이 객체를 두드리는 데 도움이되는 경우 아래 주석으로 추가 한 추가 노트를 참조하십시오. 내가 만든 몇 가지 추가적인 진전을 보게. 감사!JS : 객체의 자식 객체를 반복하고, <b, 자식 객체의 하위 문자열을 구문 분석합니다.

대학 축구 일정을 참조하고 승패, 손실 및 잠재 플레이 오프 참가자를 순위에 따라 분류하는 간단한 프로그램을 만들려고합니다. 나는 어떤 팀이 문제가되는 팀보다 높은 순위를 갖고 있는지, 그 하위 집합이 더 높은 순위의 팀이 "손실"이라는 하위 문자열을 가지고 있는지 확인한 다음 그 팀을 문서화하여 스크립트를 작성하려고합니다. 선언 된 div. 논리적으로, 나는 실제로 일어날 단계를 이해하고 있지만 실제 초심자 인 것처럼, 나는 (다소 당혹스럽게도) 몇 시간의 테스트 후에도 지속되고 Stackoverflow를 거치며 테스트하고, 더 많은 검색, 테스트 등

아직 개발자가 아닙니다. 여기

내가 할 노력하고있어입니다 : 내가 함께 일하고 있어요

(날짜 세트, 팀 어린이의 일부가 여기에 촬영 :

// Declare global team variable (leftover from another JS file utilizing the same data) 

var teamSched; 

// 2014 College Foootball Gamedays 

var gameDays = { 
week1: ["Thursday, August 28th", 
"Friday, August 29th", 
"Saturday, August 30th", 
"Sunday, August 31st", 
"Monday, September 1st"], 
week2: ["Thursday, September 4th", 
"Friday, September 5th", 
"Saturday, September 6th"], 
week3: ["Thursday, September 11th", 
"Friday, September 12th", 
"Saturday, September 13th", 
"Sunday, September 14th"], 
week4: ["Thursday, September 18th", 
"Friday, September 19th", 
"Saturday, September 20th"], 
week5: ["Thursday, September 25th", 
"Friday, September 26th", 
"Saturday, September 27th"], 
week6: ["Thursday, October 2nd", 
"Friday, October 3rd", 
"Saturday, October 4th"], 
week7: ["Thursday, October 9th", 
"Friday, October 10th", 
"Saturday, October 11th", 
"Sunday, October 12th"], 
week8: ["Tuesday, October 14th", 
"Thursday, October 16th", 
"Friday, October 17th", 
"Saturday, October 18th"], 
week9: ["Tuesday, October 21st", 
"Thursday, October 23rd", 
"Friday, October 24th", 
"Saturday, October 25th", 
"Sunday, October 26th"], 
week10: ["Thursday, October 30th", 
"Friday, October 31st", 
"Saturday, November 1st"], 
week11: ["Tuesday, November 4th", 
"Wednesday, November 5th", 
"Thursday, November 6th", 
"Friday, November 7th", 
"Saturday, November 8th"], 
week12: ["Tuesday, November 11th", 
"Wednesday, November 12th", 
"Thursday, November 13th", 
"Friday, November 14th", 
"Saturday, November 15th"], 
week13: ["Tuesday, November 18th", 
"Wednesday, November 19th", 
"Thursday, November 20th", 
"Friday, November 21st", 
"Saturday, November 22nd", 
"Sunday, November 23rd"], 
week14: ["Tuesday, November 25th", 
"Thursday, November 27th", 
"Friday, November 28th", 
"Saturday, November 29th"], 
week15: ["Thursday, December 4th", 
"Saturday, December 6th"], 
week16: ["Saturday, December 13th"] 
} 

// Individual Top 24 Team Objects 

// #1: 

teams = { 

    fsu: { 
    rank: 1, 
    conf: "ACC", 
    sched: 
     [gameDays.week1[2] + " <b>vs Oklahoma State</b>", 
     gameDays.week2[2] + " <b>vs Citadel</b>", 
     gameDays.week4[2] + " <b>vs #16 Clemson</b>", 
     gameDays.week5[2] + " <b>at North Carolina State</b>", 
     gameDays.week6[2] + " <b>vs Wake Forest</b>", 
     gameDays.week7[2] + " <b>at Syracuse</b>", 
     gameDays.week8[3] + " <b>vs #17 Notre Dame</b>", 
     gameDays.week10[0] + " <b>at Louisville</b>", 
     gameDays.week11[4] + " <b>vs Virginia</b>", 
     gameDays.week12[4] + " <b>at Miami</b>", 
     gameDays.week13[4] + " <b>vs Boston College</b>", 
     gameDays.week14[3] + " <b>vs Florida</b>"] 
}, 

// #2: 

    bama: { 
    rank: 2, 
    conf: "SEC", 
    sched: 
     [gameDays.week1[2] + " <b>vs West Virginia</b>", 
     gameDays.week2[2] + " <b>vs Florida International</b>", 
     gameDays.week3[2] + " <b>vs Southern Mississippi</b>", 
     gameDays.week4[2] + " <b>vs Florida</b>", 
     gameDays.week6[2] + " <b>at #18 Ole Miss</b>", 
     gameDays.week7[2] + " <b>at Arkansas</b>", 
     gameDays.week8[3] + " <b>vs #21 Texas A&M</b>", 
     gameDays.week9[3] + " <b>at Tennessee</b>", 
     gameDays.week11[4] + " <b>at #13 LSU</b>", 
     gameDays.week12[4] + " <b>vs Mississippi State</b>", 
     gameDays.week13[4] + " <b>vs Western Carolina</b>", 
     gameDays.week14[3] + " <b>vs #6 Auburn</b>"] 
}, 

usce: { 
    rank: 9, 
    conf: "SEC", 
    sched: 
     [gameDays.week1[0] + " <b>vs #21 Texas A&M, LOSS (28-52)</b>", 
     gameDays.week2[2] + " <b>vs East Carolina</b>", 
     gameDays.week3[2] + " <b>vs #12 Georgia</b>", 
     gameDays.week4[2] + " <b>at Vanderbilt</b>", 
     gameDays.week5[2] + " <b>vs #24 Missouri</b>", 
     gameDays.week6[2] + " <b>at Kentucky</b>", 
     gameDays.week8[3] + " <b>vs Furman</b>", 
     gameDays.week9[3] + " <b>at #6 Auburn</b>", 
     gameDays.week10[2] + " <b>vs Tennessee</b>", 
     gameDays.week12[4] + " <b>at Florida</b>", 
     gameDays.week13[4] + " <b>vs South Alabama</b>", 
     gameDays.week14[3] + " <b>at #16 Clemson</b>"] 
}, 

texasam: { 
    rank: 21, 
    conf: "SEC", 
    sched: 
     [gameDays.week1[0] + " <b>at #9 South Carolina, WIN (52-28)</b>", 
     gameDays.week2[2] + " <b>vs Lamar</b>", 
     gameDays.week3[2] + " <b>vs Rice</b>", 
     gameDays.week4[2] + " <b>at SMU</b>", 
     gameDays.week5[2] + " <b>vs Arkansas</b>", 
     gameDays.week6[2] + " <b>at Mississippi State</b>", 
     gameDays.week7[2] + " <b>at #18 Ole Miss</b>", 
     gameDays.week8[3] + " <b>at #2 Alabama</b>", 
     gameDays.week10[2] + " <b>vs UL-Monroe</b>", 
     gameDays.week11[4] + " <b>at #6 Auburn</b>", 
     gameDays.week12[4] + " <b>vs #24 Missouri</b>", 
     gameDays.week14[1] + " <b>vs #13 LSU</b>"] 
} 
공간의 양을 제한하기 위해 포함 객체 원하는 문자열을 얻을

1) 구문 분석 URL (예 : "../folder/texasam.html")를, 다음 변수에 팀 이름을 저장 : 단계로

단계, 최고로 나는 그것을 개요 수 나중에 참조하기 위해 (코드 작업)

단계 516,
function parseURL() { 
    var match = window.location.href.match(/(\w+).html$/); 
    if (match) { 
    return match[1]; 
    } 
    return null; 
} 

var teamElim = parseURL(); 

2) 설정 변수 나중에 참조를 위해 자신의 랭크 값을 보유 (CODE WORKING) 객체의 하위 객체에 중첩되는 특정 소자 (배열) 위에

var teamRank = teams[teamElim].rank; 

3)에 대하여 반복

function iterateTeams() { 
    for (var team in teams) { 
      console.log(team); 
     } 
} 

iterateTeams() 

그래서,이 일부 약속이 있습니다 (코드가 작동하지 않음) 적어도, 나는 실제로 "팀"개체의 각 "팀"값을 반복 할 수 있어요 때문이다. 그러나 나에게있어서 나에게는 "undefined"라는 반환 값을받지 않고 더 이상 children 객체의 요소, 특히 .rank (또는 .sched 키)에 접근하는 방법을 알 수 없습니다.

4) 여기서 "teamRank"변수 (이 경우 "21")보다 큰 순위 값을 가진 모든 팀의 하위 집합을 생성하려면 각 하위 개체의 .rank 키 값을 확인해야합니다. (아무 작업 코드, 그냥 이론)

이것은 내가 정말로 잃어버린 곳이다. 나는 이것이 아마?

function rankCheck(a, b) { 
    var finalRankSubset = (a < b); 
    if(teamRank.valueOf() < newRankSubset.valueOf()); { 
     //RIGHT HERE I AM ESPECIALLY LOST 
    } 
} 

나는 두 가지 질문/여기에 문제가있다, 더 많거나 적은,이 같은 모양해야한다고 생각 :

A) 내가 newRankSubset 값이 (아마도 내가 필요로 저장하려면 어떻게 동적으로 배열을 만드는 방법을 찾으려면?)?

b) 나중에 어떻게 해석할까요? 그래도 가장 큰 문제는 어린이 개체의 요소에 충분히 깊숙이 침투 할 수 있기 때문에 나중에 사용하기 위해 해당 데이터를 올바르게 호출하고 구문 분석 한 다음 저장하는 방법을 테스트 할 수 없다는 것입니다.

5) 이제 "21"이상으로 순위가 매겨진 모든 팀을 포함하는 데이터의 새 하위 집합을 반복하고 .sched 키에 저장된 문자열에서 부분 문자열 "손실"을 확인해야합니다. (NO CODE AT ALL)

"b"에서 위와 같은 질문을하고 있습니다. "texasam"(21) 이상으로 순위가 매겨진 모든 팀의 캡처 된 하위 집합 데이터를 가져온 다음 어떻게해야합니까? .sched 키의 부분 문자열 "LOSS"를 확인하십시오.

이미 내가 이미 분실했기 때문에, 여기서부터 시작해야 할 곳이 어디 인지도 모르겠다. 그리고 도움을 진심으로 감사 할 것입니다.

6) 마지막으로 div의 ID 인 "threatText"를 모두 div에 삽입해야합니다.

function deliverTeams() { 
    document.getElementById('threatText').innerHTML; 
    document.write(teams[teamSched].sched.join("<br>")); 
} 

내가 꽤했다 : 나는 아래의 코드는 제가 실제 document.write를() 값 (들)을 변경해야한다는 점에 대해 99.999 % 확신 제외하고, 일이 그렇게 할 것이라고 생각 이 데이터를 가지고 my other project을 만들기에 가까워지기 전에 도움을 청할 때까지 (그리고 내가받은 도움에 대해 고맙다.), 내가 정확히 여기에서하고 싶은 것을 정확히 알고 있지만, 어떤 곳에서는 적어도 코드의 일부는 이해할 필요가 있다고 생각합니다. 이전 프로젝트보다 훨씬 멀리 생각합니다.

다른 사람들이 내 코드를 작성하도록 요구하는 것은 내 욕망이 아니기 때문에 나는이 사실을 알기를 바랍니다. 나는 도움이되는 사람과 함께 기꺼이 내 길을 느낍니다. 나는 진정으로 나 자신을 내려 놓으려고 최선을 다했다. 나는 불행히도, 너무 초록색 프로그래머가이 순간을 혼자 힘으로 뽑을 수 없다.

도움을 주셔서 대단히 감사드립니다.

+0

을 나는 아주 작은 진전을 계속했습니다 마지막으로 자식 개체의 세 키에 액세스하는 방법을 알아 냈으므로 다음과 같이 처리합니다. function cycleTeams() { \t var teamKeys = Object.keys (teams [team]); \t \t console.log (teamKeys); } (console.log는 테스트 용으로 만 호출됩니다.) 이제 "팀"개체의 팀 반복과 쌍을 이루는 방법을 찾으려고합니다. 두 사람을 짝을 지을 수 있다면, 나는 그것이 크게 진전 될 것이라고 생각한다. – RTAlamo

+0

또 다른 갱신 : 나는 나의 iterateTeams 기능을 일부 변경하여 각 개체의 키에 액세스하는 방법을 알아 냈어요 생각 : 기능 iterateTeams을() { \t VAR teamArray = []; \t (var 팀 팀) { \t \t \t var teamKey = 팀 [팀]; \t \t teamArray.푸시 (teamKey); } console.log (teamArray [0]); (가) "teamArray [0]"변수, 내가 콘솔이 얻을으로 은} 그래서, 지금 : 오브젝트 {순위 : 1의 conf "ACC", 예정 : : 배열 [12]} 이 허용하는 아직 나머지를 알아 내기 위해 노력하고 있습니다 ... – RTAlamo

+0

질문을 몇 가지 질문으로 나눠보십시오. 또한 작동하는 단계를 제거하고 각 게시물마다 하나의 질문을 공식화하십시오. – dreamlab

답변

2

팀을 반복 할 때 (단계 3) 문제는 for..in statementfor (var team in teams)이 속성과 인스턴스가 아니라 가정의 속성 이름을 반복하는 것입니다. 따라서, 당신은 속성 값을 얻을 수있다 : 이제 팀에 대한 참조를 가지고

function iterateTeams() { 

    for (var teamName in teams) {  

      var team = teams[teamName]; 
      console.log('TEAM: ' + teamName); 

      ... 

을, 당신은 그것의 sched 배열에 액세스 할 수 있습니다 그래서

  ... 

      for (var i = 0; i < team.sched.length; i++) { 
       var schedDay = team.sched[i]; 
       console.log(schedDay); 
      } 

    } 
+0

덕분에 톤 드림 랩이 얼마나 고맙게 생각하는지 말할 수 없습니다. 콘솔에 출력 된 코드를보고 나에게 두 가지 질문이있는 것 같습니다 : 1) 팀의 계급보다 순위가 높은 팀만 구문 분석하는 방법 1) (parseURL() value)와 비교하는 m? 2) 그런 다음 데이터의 하위 집합에서 어떻게 페이지 HTML의 지정된 div에 "LOSS"하위 문자열이 포함 된 게임을 가져 와서 전달합니까? 내 메인 포스트를 다시 고쳐야 질문이 나오기를 바랍니다. 나는 그것을하게 행복 할 것이다! 다시 한번 감사드립니다. – RTAlamo

+0

제게는 오전에 일찍 일어나야 할 때 밤에 전화 해야겠다.하지만 일단 내 컴퓨터 앞에 다가 가면 필요한 경우 내 전체 게시물을 다시 작성해 드리겠습니다. 또한 위의 두 가지 질문에 대한 답변을 제공하는 데 필요한 코드를 작성하고 시도해 보려고 노력할 것입니다. 그 때까지 내가 들었던 대답을 듣지 못했고, 만들었습니다. 다시 한 번 감사드립니다. – RTAlamo

+1

나는 지금 당장 100 % 혼란 스럽기 때문에 몇 가지 질문을 올리고 더 쉽게 만들 수 있는지 알아볼 것입니다. 다시 한번 감사드립니다. – RTAlamo