2016-08-19 5 views
0

배열에 개체를 넣으려고하면 잘 동작합니다. 이 for 루프를 59 개의 객체를 배열에 넣어야합니다. 배열에 59 가지를 넣지 만 첫 번째 것은 객체입니다.개체를 배열로 밀어 넣으면 개체의 값이 하나만됩니다.

다음
for (i = 0; i < game.Levels[LevelNum - 1].Generation[0].LengthGen; i++) { 
    noise = game.Levels[LevelNum - 1].Generation[0].Noise 
    var a = new Object(i * 20, 20, 20, Math.round(Math.random() * noise + 1)); 
    game.Levels[LevelNum - 1].Generation.push(a); 
    console.log("Generated " + i) 
} 

페이지에서 콘솔에서 액세스 할 수있는 출력 : 다음은 코드입니다

내가 배열은 높이가 개체 가득 될 일이 필요가있는 무엇
[Object, Number*57] 
//the times 52 is the number of "Number"'s repeated 

, 길이, x 및 y 좌표 그런 다음 나중에 상자를 그리는 데 사용됩니다. 현재 내가 사용하고있는 코드는 객체에 값이 1 개인 객체 만 표시합니다. 키를 할당하려고 할 때 (나는 어떻게 호출되는지 모르지만 값 앞에 "x :"를 넣을 때) 네 개의 값 모두에 대해 말합니다. 내가 할 때 그게) 예상되었고 게임이로드되지 않습니다.

+1

실행 파일 스 니펫으로 게시 된 코드는 문제의 비정상적인 동작을 실제로 실행하거나 표시해야합니다. Object 생성자는 하나의 (옵션) 인수만을 취하고 나머지는 무시됩니다. 콘솔의 출력은 "Generated"문자열과 숫자 여야합니다. – RobG

+1

'var a = new Object (i * 20, 20, 20, Math.round (Math.random() * noise + 1));)', [* ToObject *] (http://ecma-international.org/ecma-262/7.0/index.html#sec-toobject) 규칙에 따라 새로운 객체를 반환합니다. – RobG

+0

@RobG 그러면 어떻게 출력할까요? – McMatt

답변

1

value 원시적 스크립트 데이터 형식을 가지며,

var o = new Object(value) 

는 데이터 타입과 일치하는 값에 대한 래퍼 객체를 생성한다. @RobG 주석에서 언급했듯이 Object은 생성자로 호출 할 때 단 하나의 매개 변수를 사용합니다.

그래서

VAR의 새로운 객체 A = (I *가 20, 20, 20, Math.round (인 Math.random() * 잡음 + 1));

=

가 새로운 객체

VAR A와 동일한 결과를 생성한다 (전 20 *);

는 숫자로 표시 콘솔에 기록 할 때 (20)의 복수의 래퍼와 같은 Number 객체를 생성

하지만 "typeof a" 여전히에서 "객체"로 평가되어야하며 a.constructor은 (행 "번호"평가해야 아니요 "개체").

+0

그렇다면 어떻게해야합니까? – McMatt

+0

[Array] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) 또는 저장할 각 값에 대한 속성 이름이있는 객체를 누르십시오. 이것이 당신이 찾고있는 해답이 아니라면, 당신이 성취하고자하는 것에 대한 세부 사항으로 질문을 업데이트하십시오. – traktor53

관련 문제