2014-06-20 2 views
0

먼저 JSON 모습 방법을 참조자바 스크립트 배열, 개체 및 특성을 이해하는 것이 필요

[ 
    {"ShortCode":"US","Name":"United States"}, 
    {"ShortCode":"CA","Name":"Canada"}, 
    {"ShortCode":"AG","Name":"Antigua and/or Barbuda"} 
] 

코드 :

var countries = []; 
map = {}; 

// This is going to make an HTTP post request to the controller 
return $.post('/Client/CountryLookup', { query: query }, function (data) { 
    // Loop through and push to the array 
    $.each(data, function (i, country) { 
    map[country.Name] = country; 
    countries.push(country.Name); 
}); 

$post() 내가있는 JSON을 구문 분석 할 필요가 위의 JSON &를 반환합니다 각 루프 하지만이지도 객체에 저장 될 내용을 이해하지 못함 map[country.Name] = country;

수 프림 포즈 국가 이름은 "united state"이므로 실제 매장은 map['united state']=country 무엇을 의미합니까? 심지어 나중에지도 ShortCode 같은 속성을 가질 수있는 방법

var selectedShortCode = map[item].ShortCode; 

같은 저장 코드 map{} 액세스에

?

이렇게 코딩 기법에 대해 자세히 논의하고 더 많은 예제를 통해 위의 코드를 이해하도록 도와주세요. 감사합니다

+1

환상적인 ** async ** 세계에 오신 것을 환영합니다! 너는 그렇게 할 수 없다. – SLaks

+0

개체의 색인 (국가 이름)을 국가 이름이 들어있는 개체와 동일하게 설정합니다. 따라서 console.log (map [ 'United States']. Name)'는'미국 '을 출력합니다. – Jasper

+0

왜 @SLaks? 들여 쓰기의 부족으로 과소 평가 되었습니까? – CupawnTae

답변

0

귀하의 data$.post 호출이 될 것입니다 후 :

data = 
[ 
    { ShortCode: "US", Name: "United States" }, 
    { ShortCode: "CA", Name: "Canada" }, 
    { ShortCode: "AG", Name: "Antigua and/or Barbuda" } 
]; 

는 jQuery의 .each function documentation를 살펴 보자.

기본적으로 다음과 같이 다시 작성할 수 있습니다 :

for(var i in data) 
{ 
    var country = data[i]; 
    map[country.Name] = country; 
    countries.push(country.Name); 
} 

그래서 당신이 결국 :

map = 
{ 
    "United States": { ShortCode: "US", Name: "United States" }, 
    "Canada": { ShortCode: "CA", Name: "Canada" }, 
    "Antigua and/or Barbuda": { ShortCode: "AG", Name: "Antigua and/or Barbuda" } 
}; 

countries = [ "United States", "Canada", "Antigua and/or Barbuda" ]; 

그래서 코드는 JSON을 구문 분석하고, 모든 모든 (countries를) 존재하는 국가와 출력 (map)와 관련된 데이터를 서로 다른 두 개체에 저장합니다. countriesmap을 통해 쉽게 반복 처리 할 수 ​​있지만 실제 필요는 없습니다.

편집 :

var country = data[0]; 
// country = { ShortCode: "US", Name: "United States" }; 
map[country.Name] = country; 
// map["United States"] = { ShortCode: "US", Name: "United States" }; 

그래서 나중에 map["United States"] 걸릴 수 있습니다, 그것은 당신에게 객체 { ShortCode: "US", Name: "United States" }를 반환합니다, 당신은 단순히 당신이 원하는 경우에 재산 ShortCode의 액세스 할 수 있습니다.

JavaScript의 모든 변수는 참조로 전달되며 myObject["someProperty"]은 정확히 myObject.someProperty과 같습니다.

+0

하지만 우리는이 방법으로 [item] .ShortCode map에 접근 할 수 있습니까? 여기서 ShortCode 속성이 어떻게 사용 되었습니까? 이 동적 속성을 이해하기 위해 몇 가지 샘플 코드를 제공해 주시겠습니까? 답변 감사합니다. – Thomas

+0

수정 됨. 희망은 당신이 이해하는 데 도움이됩니다. –

1

지도가 다른 언어로 해시 또는 사전 또는 관계형 배열이라고도 정의됩니다.이 경우 값 (anything)이있는 기본적으로 키 (Strin)와 관련된 것은 실제 국가 개체 thats와 관련이 있습니다 왜

지도 후 맵 구조는 [country.Name] = 국가 운영이 될 것 { "미국": { "단축 코드": "미국", "이름": "미국"}, " 캐나다 ":"ShortCode ":"CA ","Name ":"캐나다 "}, "앤티가 및/또는 Barbuda " } }

다음

map["United States"] 

할 당신이 얻을 때

{ "단축 코드": "미국", "이름": "미국"}

+0

하지만이 방법으로 [item] .ShortCode 맵에 액세스 할 수있는 방법은 무엇입니까? 여기서 ShortCode 속성이 어떻게 사용 되었습니까? 이 동적 속성을 이해하기 위해 몇 가지 샘플 코드를 제공해 주시겠습니까? 답변 감사합니다. – Thomas

+0

thats map [item]을 사용하여 답변에 writtend가있는 것은 map = ""United States "map ["United States "]이 ShortCode 및 Name 속성을 포함하는 객체 인 경우 map ["United States "] 사용과 동일합니다. map [ "United States"]. ShortCode는 "US"입니다. –

관련 문제