2017-09-07 1 views
1

간단한 개체를 만들고 싶습니다.배열 요소 순서대로 배열에서 개체를 만드는 방법

예 : {집 : '집, 고양이'고양이 '개'개 ', 45 : 45}

그러나 항상 내 배열의 숫자를 취 자바 스크립트

예 : 45-45 : 45

그리고 그것을 맨 위/맨 앞에 놓습니다.

질문 1 : 왜 이런 일이 발생합니까?

질문 2 : 배열에 표시된 순서대로 항목을 사용하여 개체를 만들려면 어떻게해야합니까 (예, 모든 개체가 키를 가지고 있기 때문에 개체 내에 배치하는 방법이 중요하지 않음). 그러나 도움을주십시오.

let jakesLife = [ 
    'house', 
    'cat', 
    'dog', 
    45 
    ] 
function x() { 
    let obj = {}; 
    for (let i = 0; i < jakesLife.length; i++) { 
     obj[jakesLife[i]] = jakesLife[i]; 
    } 
    return obj; 
} 
x() 
+0

당신이 더 많은 정보 나 설명을 추가하려는 경우, 당신의 질문을 수정하시기 바랍니다. – spanky

답변

1

개체는 순서가 없습니다. 그래서 우리는 배열을 가지고 있습니다. 주문한 키 목록은 필요할 때 주문한 액세스 권한을 얻기에 충분해야합니다.

자주 필요한 경우이를 처리하는 객체 유형을 만들 수 있습니다.

let jakesLife = [ 
 
    'house', 
 
    'cat', 
 
    'dog', 
 
    45 
 
] 
 

 
class Ordered { 
 
    constructor(arr) { 
 
    this.__keys = arr; 
 
    arr.forEach(k => this[k] = k) 
 
    } 
 
    
 
    each(callback) { 
 
    this.__keys.forEach(k => callback(this[k], k)) 
 
    } 
 
} 
 

 
var o = new Ordered(jakesLife); 
 
o.each(v => console.log(v));

+0

모든 속성 값이 속성 키와 같으므로 아무 것도 그 속성으로 저장하지 않아도됩니다. – Bergi

+0

@Bergi : 장난감 예. :) – spanky

+0

"실제 값"(순서가있는 배열 외에도)에 대한 추가 매핑이있는 경우에도 매핑 자체를 저장하는 대신 인스턴스의 속성에 값을 복사 할 이유가 표시되지 않습니다. '.__ values' 또는 뭐. – Bergi

관련 문제