2012-12-05 2 views
1

여기에 내 코드가 있습니다. 값이 동적으로 객체에 전달 될 두 개의 배열 [lab, val]이 있습니다. k는 당신의 data 변수가 선언되지 않은 것입니다처럼 보이는 물체객체의 동적 배열을 만들고 다시 검색하려고합니다.

var lab = ["1","2","3",4]; 
var val = ["sa","ma","pa","da"]; 
var k = []; 
for(var i=0; i<4; i++) { 
    data[i] = {};    
    data[i].label = lab[i]; 
    data[i].value = val[i]; 
    k.push(data[i]) ; 
} 

document.write(k.data[0]); 
document.write(" " + k.data[0] + "<br />"); 
+2

당신이 원하지 않는 것은 무엇입니까? – qw3n

+0

'data' 변수의 출처는 어디입니까? 'k [i] = { "label": label [i], "value": val [i]};'를 사용하고'.push()'는 생략하십시오. – nnnnnn

+0

질문을 추가하고 "작동하지 않는"의미 - 당신이 기대하는 것과 일어나지 않는 것/당신이 보는 정확한 오류 (나는 거기에 속하지 않으므로 제목에서 "작동하지 않음"을 제거함)을 의미하십시오. –

답변

1

는, 다음과 같이 그것을 -

var lab = ["1","2","3",4]; 
var val = ["sa","ma","pa","da"]; 
var k = []; 
var obj; // it will hold temporary object references 

for(var i=0; i<4; i++) { 
    obj = {};    
    obj.label = lab[i]; 
    obj.value = val[i]; 
    k.push(obj) ; 
} 

document.write(k[0].label); // index k, rather than the value it contains 
document.write(" " + k[0].value + "<br />"); 

당신이 k 저장 값을 색인하고 있기 때문에 귀하의 코드가 작동하지 않습니다, data 변수는 어디에도 선언되어 있지 않습니다.

는 당신은 바로 더 나은 방법입니다 배열로 객체를 밀어 for 루프를 단축 할 수 -

for(var i=0; i<4; i++) { 
    k.push({ 
     label: lab[i], 
     value: val[i] 
    }) ; 
} 

을 당신도 임시 객체가 필요하지 않습니다 이런 식으로.

+0

나는 C 값을 가지고있는 구조체의 배열을 가지고 있는데, 그 값을 자바 스크립트에 전달하고 HTML을 통해 임베디드 시스템 (유일한 방법)에 보내야한다. 그리고 이것 이외의 좋은 제안이있다. 자바 스크립트에 유창하지 않다. – kelvin

+0

@kelvin : Adam Rackis와 동의합니다. 거기서 소비되는 일종의 서비스를 사용하여 데이터 구조를 노출하면 더 좋을 것입니다. –

2

를 유지하는 배열입니다. 당신이 거기있는 동안,에 조건을 변경하는 것을 고려, 당신의 루프 전에 선언 시도하고 오히려 하드 2

var lab = ["1","2","3",4]; 
var val = ["sa","ma","pa","da"]; 
var k = [], 
    data = []; // <----- here 
for(var i = 0; i < lab.length; i++) { 
    data[i] = {};    
    data[i].label = lab[i]; 
    data[i].value = val[i]; 
    k.push(data[i]) ; 
} 

하지만 실제로에서 코딩하는 것보다, 배열의 길이를 확인하는 루프 , data 배열의 요점은 무엇입니까? k의 모든 것을 복제 한 것 같습니다. 왜 그냥 수행

이미 배열로 객체를 추진하고 있기 때문에
var lab = ["1","2","3",4]; 
var val = ["sa","ma","pa","da"]; 
var k = []; 

for(var i=0; i < lab.length; i++) { 
    k.push({ 
     label: lab[i], 
     value: val[i]  
    }); 
} 
+0

나는 C 배열을 가지고 있는데, 그 값을 자바 스크립트에 전달하고 다시 검색해야한다. – kelvin

+0

@kelvin - 확실히 그렇지 않다. JavaScript 구조에 C 구조체의 배열을 전달하는 방법을 알지 못합니다. 일종의 웹 서비스를 통해 JSON으로 직렬화해야한다고 생각합니다. –

관련 문제