2013-09-22 5 views
1

개체 배열 목록이 포함 된 개체가 있습니다. 배열 목록 내에서 객체의 값을 얻고 싶습니다. 내가 ID의 이름을 액세스하기 위해 노력하고있어배열 목록의 이름으로 개체 액세스

var data = { 
      items1: [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }], 
      items2: [{ id: 3, name: 'foo' }, { id: 4, name: 'bar' }] 
      }; 

예 : 1 어레이 목록 items1한다.

가 나는

data['items1']['id'].name 

같은 것이라고 생각하지만 난 뭔가를 놓친 것 같아. 누구 내가 items1 배열이기 때문에이 data['items1'][0].name

+0

, 잘못된 JSON 것으로 보인다 : 당신이 ID로 조회 할 경우

// The first item in the array data['items1'][0].name // The second data['items1'][1].name 

, 당신은 당신을 위해 할 수있는 작은 기능을 할 수 있습니다 첫 번째 항목 뒤에 쉼표가 없습니다. – Daedalus

+0

표시되는 문제를 자유롭게 해결하십시오. 웹에서 다른 예제의 게시물을 신속하게 수정하여 제가하려는 것을 보여줍니다. –

+0

해당 사항 없음. OP의 질문에서 코드를 수정하는 것은 결코 의미를 바꾸지 않습니다. 코드에 결함이 있거나 misposted 경우, 그것을 수정/수정하는 직업입니다. – Daedalus

답변

4

배열입니다. 각 배열에는 객체 인 요소가 있으며 각 요소는 2 개의 키 (idname)를 포함합니다.

당신이 할 것 items1 배열의 첫 번째 요소의 id으로 활용하려면 다음

data.items1[0].id 

하는 1을 반환합니다.

당신은 같은 것을 할 수 items2에서 '바'의 이름으로 객체를 검색하고 싶다면 :

function find(item, name) { 
    //no such array 
    if(!data[item]) 
     return; 

    //search array for key 
    var items = data[item]; 
    for(var i = 0; i < items.length; ++i) { 
     //if the name is what we are looking for return it 
     if(items[i].name === name) 
      return items[i]; 
    } 
} 

var obj = find('items2', 'bar'); 
obj.id; //4 
obj.name; //'bar' 

을 나는 매우 읽기 제안에 대한 JavaScript ObjectsArrays.

+0

kelsadita의 예에서 그는 'items1']을 사용할 수 있음을 보여 주지만, 동적으로 전달할 항목은 괜찮습니까? –

+3

키가 작동하는 방법을 배우려면 [javascript objects] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects)를 읽어보십시오. 'data.items2'를 쓰는 것은'data [ 'items2']'에 대한 설탕 일뿐입니다.'var k = 'items2'; 데이터 [k];는 같은 것입니다. – Chad

1

일을 할 수있는 알고, 당신은 작성해야 :이 객체가 2 키 (items1items2), 모두 함께

data.items1[0].name 
+0

json의 구조에 따라 그렇게하지 않을 것입니다. – Daedalus

+0

0은 무엇을 의미합니까? –

+0

@George : items1 배열의 첫 번째 요소에 해당합니다. – Kelsadita

2

을 시도 잘못된

+0

필요한 배열을 동적으로 전달하므로이 작업이 효과적이지 않습니다. –

+0

@George 그러면 json을 재구성하거나 인접한 값을 찾기위한 함수를 만들어야합니다. 첫 번째 방법은 쉬운 방법입니다. – Daedalus

+0

@Daedalus 내 json을 재구성하는 방법을 더 잘 알고 있습니까? –

2

배열 항목은 숫자 인덱스로만 액세스 할 수 있습니다. 예를 들어 '당신이 돈 주어진 우선 들어

function getItemById(anArray, id) { 
    for (var i = 0; i < anArray.length; i += 1) { 
     if (anArray[i].id === id) { 
      return anArray[i]; 
     } 
    } 
} 

var theName = getItemById(data['items1'], 1).name;