2

文字列と変数をJadeが理解できる変数名に連結するための優れたクリーンな方法はありますか?

理想的には、次のようになります。

each #{shape + 'Text'} in #{shape + 'Texts'}
    li #{shape + 'Text'}

使ってみwindow[shape + 'Text']ましたが、うまくいかなかったようです。多分私はそれを間違っていましたか?

これが私がこれをしたい理由です:

shapes私はこのように見えると呼ばれる配列を持っています:['square', 'triangle', 'circle']

Jadeのeach ... in ...関数を使用して、この配列を反復処理しています。each ... in ...関数の各反復内で、他のいくつかの配列の1つを実行する必要があります。のように、反復する配列を選択するためにストレートアップ変数を使用する代わりに、またはのようなものを取得するために文字列each shape in shapesと連結したいと思います。shapeeach squareText in squareTextseach circleText in circleTexts

現在、私は希望する結果を達成するために条件を使用していますが、それは冗長であり、言語のミニマリスト精神ではありません。

アドバイスをよろしくお願いします。

4

4 に答える 4

6

したがって、私の場合の秘訣は、Javascriptのeval()関数を使用して、変数名と文字列を新しい変数名に連結することです。これが私の成功した(そして簡潔な)実装です。

- var items = eval(shape + 'Texts');
each item, i in items
    li #{items[i]}
于 2012-10-09T15:31:14.950 に答える
0

翡翠からこれを作成/評価するオプションを検討し、翡翠のコード(およびこの問題のテンプレート)をできるだけ単純に保つことをお勧めします。

于 2013-07-29T06:14:40.513 に答える
0

変数と文字列を括弧で囲むことができます。

each item, i in items
  li=(shape + 'Texts')
于 2015-11-03T02:50:20.557 に答える
-2

私はまったくわからないので、あなたが言及していることを正確にフォローしていませんjadeが、あなたはこのような配列をループします。

var a = ['square', 'triangle', 'circle'];
var i, l, item;
l = a.length;
for (i = 0; i < l; i++) {
  item = a[i];
  // At this point, you can refer to window[item + 'Text']
  // but I'm not sure what that is supposed to mean.
}

Array.prototype.everyも利用できますが、私は通常、古いブラウザーにモンキーパッチを適用する必要はありません。

于 2012-10-09T01:18:21.793 に答える