2014-04-26 2 views
0

각 레코드가 To, FromSubject과 같은 여러 속성을 가리켜 야하는 이메일 배열을 사용해야합니다. 나는이 같은 짓 : 내가 놓친 게 무엇자바 스크립트로 된 이메일 객체 배열

var emailAttr = new Array("to","from","subject"); 
var emails = new Array(emailAttr); 
emails[0].to = "abc1"; 
emails[1].to = "abc2"; // This line gives exception that emails[1] is undefined 

을 그리고 난 그것이 내가 emails[i].to 같은 요소에 액세스 할 수있는 일을 어떻게 할 수 있습니까?

+0

가'CONSOLE.LOG 할 (JSON.stringify (이메일))'무슨 일이 있었는지 확인합니다. – Bergi

+0

'emails'는 오직 하나의 요소만을 포함합니다; 3 요소 (to/from/subject)가있는 배열. –

답변

1
var emailAttr = new Array("to","from","subject"); 

이것은 값으로 새로운 배열을 작성 값 :

012 3,516,
0: The array you created in the previous line 

는이 :

emails[0].to = "abc1"; 

은 첫 번째 배열에 새 속성을 추가 :

0: "to" 
1: "from" 
2: "subject" 
to: "abc1" 

다음이 :

emails[1].to = "abc2"; 

...에 동일한 작업을 수행하려고합니다 emails 배열의 두 번째 항목이지만 사용자는 assi를 사용하지 않았습니다. 배열이 거기에 있으므로 허용되지 않는 객체 인 undefined에 속성을 설정하려고하면 오류가 발생합니다.


당신은 아마 (값을 주문, 인덱스 숫자에 대한하지 배열, 이름 값을 사용하여 객체를 사용 배열) 객체 (이메일 개체의 당신의 주문 목록) 배열을 만들려면, 당신은 만들 필요가 각 멤버의 새로운 오브젝트

var emails = []; 

emails.push({ 
    to: "abc1", 
    from: "...", 
    subject: "..." 
}); 

그런 다음 원하는만큼 많은 항목을 추가 할 수 있습니다.

당신은 원래 구문을 사용하여의 항목을 편집 할 수 있습니다 (그러나 유일한 사람은 당신이 이미 만든) :

NB
emails[0].to = "abc1"; 

: 가장 좋은 방법은 새로운 배열과 객체를 생성 할 []{} 리터럴을 사용하는 것입니다, 생성자 함수는 Array()Object()이 아닙니다.

0

먼저 하위 개체가 무엇인지 정의해야합니다. emails[1].to을 작성할 때 이미 정의되기 전에 해당 하위 오브젝트에 액세스하려고합니다.

변경 그것에 :

0: "to" 
1: "from" 
2: "subject" 
이어서

var emails = new Array(emailAttr); 

이 하나 이루어진 새로운 배열을 작성

emails = []; // create the main array 
emails[0] = {to: 'abc1'}; // define an object and assign it to the main array 
emails[1] = {to: 'abc2'}; 
1

당신은 이메일 객체 만들기 및 이메일 배열에 사람들을 밀어해야합니다

// Create emails array 
var emails = []; 

// Create an email object 
var emailObj = { 
    to: '[email protected]', 
    from: '[email protected]', 
    subject: 'Hello there' 
}; 

// Add the email to the emails array 
emails.push(emailObj); 

// Will console log "Hello there" 
console.log(emails[0].subject); 
0

당신은 객체로 구성된 배열을 만들어야합니다.

그래서 대신이 줄

var emails = new Array(emailAttr); 
emails[0].to = "abc1"; 
emails[1].to = "abc2"; 

단순히이를 작성할 수 있습니다

var emails = [{ 
    to: "abc1" 
}, { 
    to: "abc2" 
}]; 
관련 문제