2012-01-18 5 views

답변

18

당신은 사용해야합니다. 대신 Object ({})을 사용하십시오.

배열을 계속 사용하려는 경우 toString()은 넘버의 모든 속성을 쉼표로 구분하여 함께 합칩니다. (.join(",")과 동일).

숫자 인덱스가 아니기 때문에 ab과 같은 속성은이 메서드를 사용하지 않습니다. (즉, 배열의 "본문")

JavaScript에서는 Array가 Object에서 상속되므로 다른 객체와 마찬가지로 Array에 속성을 추가하고 삭제할 수 있습니다. 따라서 배열의 경우 번호가 매겨진 속성 (기술적으로는 후드 아래의 문자열)은 .toString(), .join() 등과 같은 메서드에서 중요합니다. 다른 속성은 여전히 ​​많이 있으며 액세스 할 수 있습니다. :)

배열에 대한 자세한 내용은 Mozilla's documentation을 참조하십시오.

var aa = []; 

// these are now properties of the object, but not part of the "array body" 
aa.a = "A"; 
aa.b = "B"; 

// these are part of the array's body/contents 
aa[0] = "foo"; 
aa[1] = "bar"; 

aa.toString(); // most browsers will say "foo,bar" -- the same as .join(",") 
3

toString은 함수가 아닌 속성입니다. 당신이 원하는 것 :

console.log(aa.toString()); 

는 다른 방법으로, 사용이 구분 지정에 가입 (toString()를 === 가입 (''))

console.log(aa.join(' and ')); 
11

toString이 방법은, 당신이해야하므로 괄호 ()을 추가하여 함수를 호출하십시오. 당신 키로 문자열을 사용하려는 경우

> a = [1,2,3] 
[ 1, 2, 3 ] 
> a.toString() 
'1,2,3' 

게다가, 당신은 대신 ArrayObject 사용을 고려하고, 문자열을 반환하는 JSON.stringify를 사용해야합니다.

> var aa = {} 
> aa['a'] = 'aaa' 
> JSON.stringify(aa) 
'{"a":"aaa","b":"bbb"}' 
+0

괄호를 잘못 입력하십시오. 수정되었습니다. 문자열로 Object를 키로 사용하는 이유를 설명 할 수 있습니까? Array를 사용할 수없는 이유는 무엇입니까? 그리고 Object.toString()이 작동하지 않는 이유는 무엇입니까? – Magic

+1

@Magic이 위대한 게시물을 참조하십시오 : http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/ – qiao

1

노드에서, 당신은 단지

console.log(aa) 

을 말할 수 있으며 예상대로 그것을 포맷합니다. 당신이 결과 문자열을 사용해야하는 경우 당신은 자바 스크립트에 존재하지 않는 "연관 배열"같은 Array을 사용하고

JSON.stringify(aa) 
+0

JSON.stringify (aa)가 내용을 인쇄 할 수 없습니다. 내 배열은 문자열 인덱스이기 때문에. int 인덱스 배열에서만 작동합니다. – Magic

+1

@Magic - js에는 문자열 인덱스 배열과 같은 것이 없습니다.실제로 배열 함수가 Object에서 상속 받기 때문에 연관 배열을 에뮬레이션 할 수 있기 때문에 Array 함수가 더 이상 작동하지 않으며 다른 함정이 있습니다. 연관 배열이 필요하다면, 배열 타입 대신에 객체'{a : 0, b : 4}'를 사용해야한다. 단지 숫자 인덱스'[0,4]'에서만 작동한다. –

관련 문제