2013-04-15 2 views
0

은 두 줄 수 있습니다이 두 줄을 한 줄로 만드는 간단한 방법이 있습니까? 여기

pixels[x-left] = {}; 
pixels[x-left][y] = true; 

그것은 크게 두 가지가 하나의 표현으로 결합 할 수 있다면 나에게 몇 가지 코드를 정리 할 수있다. 편지 y이 인덱스 대신 확인되지 y의 값으로 사용되는 그러나

pixels[x-left] = { y: true }; 

:

내 첫 번째 시도는 다음과 같이 보였다.

+0

@Abbas 'y'는 변수입니다. –

+1

자주 묻는 질문입니다. 내가 찾을 수있는 대부분의 upvotes로 복제 : [자바 객체 키에 변수 사용하기] (http://stackoverflow.com/questions/2274242/using-a-variable-for-a-javascript-object-key) – Bergi

답변

3

내가 바로 BERGI의 솔루션을 선호해야한다는 말을 시작 하겠지만, 경우에 그렇지 코드의 가독성을 죽이는 마음이가 assignment expression로 작동

(pixels[x-left] = {})[y] = true; 

Fiddle

가 (이 경우 할당 된 개체에 대한 참조를) 할당 된 값을 반환합니다.

+0

Aw, nice :-) 물론 진술 값을 변경하지만, 중요하지 않아야합니다. – Bergi

+0

진술 뒤에 세미콜론이 있는데 다른 표현식의 일부가 아니길 바래요. 예, 표현식을 가정합니다. 반환 값은 중요하지 않습니다. '=]' –

+0

"예쁜"것은 아니지만, 내가 찾고 있었던 것입니다. 고마워요! – Joncom

2

아니요, 아니요 아니요 *가 있습니다. 객체 리터럴의 속성 이름은 문자 그대로 해석됩니다.

한 가지 방법은 아웃

Object.set = function(o, p, v) { o[p] = v; return o; }; 

pixels[x-left] = Object.set({}, y, true); 

하지만 모두 코드를 읽는 것은 약 Object.set을 알 필요가 같은 도우미 함수의 일종이 될 것입니다.

* @ 후 파브의 대답은 내가 "가능성"을 언급 할 수 없습니다 더 이상 :-)

+0

+ 남극 바다 표범을 살해하지 않았 으면 1. '=]'그리고 rofl을 언급합니다. 'xD' –

관련 문제