2010-12-03 5 views
2
var adList = new Array(); 
    adList[0]["img"] = 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg';/* 
    adList[0]["h3"] = 'Product title2'; 
    adList[0]["button"]["link"] = '#link-url'; 
    adList[0]["button"]["text"] = 'Buy now'; 
    adList[0]["h3"] = 'asdfasdfasdf'; 

    adList[1]["img"] = 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg'; 
    adList[1]["h3"] = 'Product title2'; 
    adList[1]["button"]["link"] = '#link-url'; 
    adList[1]["button"]["text"] = 'Buy now'; 
    adList[1]["h3"] = 'asdfasdfasdf'; 

오류가 발생했습니다. adList[0] is undefined이 같은 배열을 정의 할 수 있습니까? 변수를 할당하기 전에 adList[0]을 배열로 지정해야합니까?JS 배열 - 배열을 만드는 방법

답변

4

adList[0]에 할당 된 값이없는 것을 참조하려고합니다. 당신이 adList[0]['img']의 값에 액세스하려고 할 때,이 상황이 발생합니다

adList   -> Array 
adList[0]  -> undefined 
adList[0]["img"] -> Error, attempting to access property of undefined. 

배열을 사용하여 시도하고 대신을 정의하는 문자 표기법을 객체.

adList = [{ 
    img: 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg', 
    h3: 'Product title 1', 
    button: { 
     text: 'Buy now', 
     url: '#link-url' 
    } 
}, 
{ 
    img: 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg', 
    h3: 'Product title 2', 
    button: { 
     text: 'Buy now', 
     url: '#link-url' 
    } 
}]; 

또는 당신은 단순히 개별적으로 adList[0]adList[1]을 정의하고 기존의 코드를 사용할 수 있습니다 : 당신은 또한 객체 표기법을 사용할 수 있습니다

var adList = new Array(); 
adList[0] = {}; 
adList[1] = {}; 
adList[0]["img"] = 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg'; 
... etc etc 
+1

나를 때려 줘 : P는 여기 JSFiddle 내가 사용하려고했던 배열/개체 믹스의 라이브 예제를 보여주는거야. http://jsfiddle.net/subhaze/A8vmX/ – subhaze

2

을 수행해야합니다 :

adList[0] = new Array(); 

를 비슷한 방식으로 당신이 adList 자체를 생성하는 방법에.

1

너는 그걸로 물건을 만들기 시작할 수 있기 전에 배열이 무엇을 포함해야 지정해야합니다. 다른 초기화되지 않은 변수를 사용하는 것과 같습니다.

var adList = new Array(); 
sizeOfArray = 5; 
for (var i=0; i < sizeOfArray; i++) { 
    adList[i] = new Array(); 
} 

adList[0]["img"] = 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg'; 

이렇게하면 배열을 사용하여 adList의 내용을 0-4로 초기화합니다. 그런 다음에 값을 할당 할 수 있습니다.

adList[0]["img"]은 실제로 배열의 인덱스를 사용하지 않습니다. 배열은 객체이기 때문에 어쨌든 속성을 설정할 수 있습니다. 이것은 adList[0].img과 같습니다.

2

을 :

adList = [ 
{ 
    "img": 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg', 
    "h3": 'Product title2', 
    "button": {"link": '#link-url', 
       "text": 'Buy now'}, 
    "h3": 'asdfasdfasdf' 
}, { 
    "img": 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg', 
    "h3": 'Product title2', 
    "button": {"link": '#link-url', 
       "text": 'Buy now'}, 
    "h3": 'asdfasdfasdf' 
}]; 
+0

위대한 생각은 비슷합니다. 더 큰 마음은 더 빨리 생각합니다 : p. –

1

귀하의 문제는 adList[0]adList[1] 그 초기화되지 않았습니다. 이 배열은 adList과 관련이 없습니다.

따라서 속성 값을 할당하기 전에 adList[0] = new Object();을 할당하기 전에 수행하려는 작업이 필요합니다.

var adList = new Array(); 
    adList[0] = new Object(); 
    adList[0]["img"] = 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg';/* 
    adList[0]["h3"] = 'Product title2'; 
    adList[0]["button"]["link"] = '#link-url'; 
    adList[0]["button"]["text"] = 'Buy now'; 
    adList[0]["h3"] = 'asdfasdfasdf'; 

    adList[1] = new Object(); 
    adList[1]["img"] = 'http://www.gamer-source.com/image/media/screenshot/thumbnail/489.jpg'; 
    adList[1]["h3"] = 'Product title2'; 
    adList[1]["button"]["link"] = '#link-url'; 
    adList[1]["button"]["text"] = 'Buy now'; 
    adList[1]["h3"] = 'asdfasdfasdf'; 
관련 문제