2013-04-15 100 views
0

這裏有兩條線:有沒有一種簡單的方法可以將這兩行變成一行?

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

這將極大地讓我清理一些代碼,如果兩者可以合併成一個單一的表達。然而信y被用來作爲指標來代替的y的價值,這是不正常

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

我第一次嘗試看起來是這樣的。

+0

@Abbas'y'是一個變量。 –

+1

這是一個經常被問到的問題。我可以找到最多upvotes的重複:[使用一個Javascript對象鍵的變量](http://stackoverflow.com/questions/2274242/using-a-variable-for-a-javascript-object-key) – Bergi

回答

3

我就開始馬上說BERGI的解決方案應該是首選,但如果你不這樣做介意殺死你的代碼的可讀性:

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

Fiddle

這個工程作爲assignment expression返回指定的值(在這種情況下,分配的對象的引用)。

+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沒有謀殺南極的海豹。 '=]'和提到的。 'xD' –

相關問題