2016-06-05 3 views
1

objectarray[id] = "certain value"과 함께 저장하여 모든 단일 사용자가 즐겨 찾기 목록을 갖도록 할 수 있습니까?내부에 배열이있는 객체를 저장 하시겠습니까?

내가 얻으려고하는 것은 처음에는 정의되지 않은 값을 가진 데이터 객체를 가지고 있고이를 채우는 것이므로 예를 들어 Jack과 Sam은 할당 된 좋아하는 영화를 저장할 수 있습니다.

Data.js :

module.exports = function() { 
    return { 
     favMovie: "" 
    } 
}; 

App.js : 어떤 배열에서 원하는처럼

var person [] = data(); 

//1st person 
person[811767132257839].favMovie = "Matrix"; 

//2nd person 
person[107230716367889].favMovie = "Kill Bill"; 

//3rd person 
person[973676332752239].favMovie = "Avatar"; 

... 

console.log("Favorite movie: " + person[id].favMovie); 

답변

6

그것은 소리가 나지 않는다

나는 성공없이이 같은 시도 모두, 그냥 물건.

// Create an object that we'll keep person objects in 
var personData = {}; 

// Add a person object to it for person ID #123 
personData[123] = {}; 

// Set person #123's favorite movie: 
personData[123].favMovie = "Avatar"; 

// Add a different person; this time, we'll add the movie at 
// the same time 
personData[234] = { 
    favMovie: "Matrix" 
}; 

같은지도와 같은 개체를 사용하여, 때로는 사람들이 상속 된 속성 (같은 toStringvalueOfconstructor)를 갖는 그들을 피하기 위해 Object.create(null)를 사용하여 객체 생성 : 일명 (ES2015에서

person[123] = Object.create(null); 
person[123].favMovie = "Avatar"; 

을 " ES6 "), 사람들의지도 대신에 Map을 사용할 수도 있습니다.

var personData = new Map(); 

... 다음 개별 개체 개체에 setget을 사용하십시오.

function Person() { 
    // ... 
} 
Person.prototype.doSomething = function() { 
    // ... 
}; 

... 또는 ES2015 구문 :

class Person { 
    constructor() { 
     // ... 
    } 
    doSomething() { 
     // ... 
    } 
} 

각 사람의 오브젝트가 복잡하면

, 당신은 ES5 구문을 사용하여, 생성자 함수 그들을 위해 관련 프로토 타입을 사용할 수 있습니다 그리고 그들을 만드는 :

personData[123] = new Person(); 
// or if using Map 
personData.set(123, new Person()); 

참고 : 숫자로 쓰더라도 객체의 키 (속성 이름)는 항상 문자열입니다 (ES2015 Symbol을 사용하지 않는 한 여기에 표시되지 않음). 반대로 ES2015 Map의 키는 무엇이든 될 수 있습니다. Map 인스턴스의 키 동등성은 "same value zero" 알고리즘 (기본적으로 ===이며 NaN은 [===]에 해당하지 않음)을 사용하여 결정됩니다.

관련 문제