这里有两条线:有没有一种简单的方法可以将这两行变成一行?
pixels[x-left] = {};
pixels[x-left][y] = true;
这将极大地让我清理一些代码,如果两者可以合并成一个单一的表达。然而信y
被用来作为指标来代替的y
的价值,这是不正常
pixels[x-left] = { y: true };
:
我第一次尝试看起来是这样的。
这里有两条线:有没有一种简单的方法可以将这两行变成一行?
pixels[x-left] = {};
pixels[x-left][y] = true;
这将极大地让我清理一些代码,如果两者可以合并成一个单一的表达。然而信y
被用来作为指标来代替的y
的价值,这是不正常
pixels[x-left] = { y: true };
:
我第一次尝试看起来是这样的。
我就开始马上说BERGI的解决方案应该是首选,但如果你不这样做介意杀死你的代码的可读性:
(pixels[x-left] = {})[y] = true;
这个工程作为assignment expression返回指定的值(在这种情况下,分配的对象的引用)。
不,有不是不干净*。对象字面值中的任何属性名称都是从字面上解释的。
一条出路将是某种形式的辅助函数,如
Object.set = function(o, p, v) { o[p] = v; return o; };
pixels[x-left] = Object.set({}, y, true);
但后来大家阅读你的代码需要了解Object.set
。
*后@法布里西奥的回答,我不能说出“没有可能”更多的:-)
+ 1没有谋杀南极的海豹。 '=]'和提到的。 'xD' –
@Abbas'y'是一个变量。 –
这是一个经常被问到的问题。我可以找到最多upvotes的重复:[使用一个Javascript对象键的变量](http://stackoverflow.com/questions/2274242/using-a-variable-for-a-javascript-object-key) – Bergi