2014-10-05 13 views
0

배열을 만들 때 키 필드를 무시하고 JavaScript가 0부터 시작하여 순서대로 키를 생성하도록 할 수 있습니다. 우리가자동 개체 숫자 키 지정

alert(color[0]); //green 

나는 숫자 키를 가진 개체를 만들려면처럼

var color = ['green', 'blue', 'red', 'yellow', 'purple']; 

에 액세스 할 수있는,하지만 난 오히려 명시 적으로 정의하지 것이다 유사한 방법이 가능하다?

내가

var color = {'green', 'blue', 'red', 'yellow', 'purple'}; 
console.log(color); 

을 시도하지만 예상대로이 작동하지 않습니다 구문 에러를 반환 실종 : 속성 ID 후 내가 그나마

+0

키쌍 : 값 쌍이없는 개체를 만들 수 없다는 것을 알고 있습니다. – Nico

+1

숫자 키가있는 객체는 Array로 가장 잘 대체됩니다. 왜 그렇게 필요한거야? 내가 아는 한 당신은이'{1 : "녹색", 2 : "파란색"}'?? –

+0

@ RokoC.Buljan 다른 게시물에서 본 키가 존재하는지 확인해야합니다. if (key in obj) ... if if (typeof = 배열을 통해 정의되지 않음) – gummage

답변

0

이 가능합니다 생각합니다. W3C 정의에 따라 javascript 객체 :

JavaScript 객체는 명명 된 값의 컨테이너입니다.

명명 된 값은 이름 : 값 쌍 (이름과 값은 세미콜론으로 구분)으로 작성됩니다.

JavaScript 개체의 name : value 쌍을 개체 속성이라고합니다.

따라서 그렇게 할 수 없습니다. 이러한 상황을 만들기 위해 루프를 사용하십시오. 예 :

var obj = {}; 
for(var i = 0; i < length; i += 1) { 
    obj[i] = color[i] ; 
} 
0

불가능합니다. js 객체가있는 방식 일뿐입니다.

배열을 반복 실행하고 데이터를 객체 안에 넣을 수는 없습니까?

var color = ['green', 'blue', 'red', 'yellow', 'purple']; 
var colors_obj = {}; 

for(var color_num_key in color) { 
    colors_obj[color_num_key] = color[color_num_key]; 
} 

console.log(colors_obj); 

JS Fiddle demo

0

당신이 주장하는 경우, 캐논의 reduce 솔루션 @ 및 Fyre의 수동 솔루션 @도 모두 잘하지만 :

$.extend({}, color)     // jQuery 
_.extend({}, color)     // Underscore 
Object.assign({}, color)   // ES6 
LIB.extend_like_api({}, color)  // all other libraries in the world 

기본적으로 모든 무엇을 어떻게 제거입니다 이들은 "array- 배열의 "네스".