0

以下に 2 つの行を示します。

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

この 2 つを 1 つの式に組み合わせることができれば、一部のコードを大幅にクリーンアップできます。

私の最初の試みは次のようになりました:

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

ただし、文字yは の値の代わりにインデックスとして使用されておりy、これは問題ありません。

4

2 に答える 2

3

Bergi のソリューションを優先する必要があるとすぐに言い始めますが、コードの可読性を犠牲にしてもかまわない場合は、次のようにします。

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

フィドル

これは、割り当て式が割り当てられた値 (この場合、割り当てられたオブジェクトへの参照) を返すため機能します。

于 2013-04-15T00:16:33.507 に答える
2

いいえ、きれいなものはありません*。オブジェクト リテラル内のプロパティ名は、文字どおりに解釈されます。

1つの方法は、次のようなヘルパー関数です。

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

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

しかし、その場合、コードを読んでいるすべての人が について知る必要がありますObject.set

* @Fabricio の回答の後、「可能性がない」とは言えません :-)

于 2013-04-15T00:09:54.647 に答える