2016-05-15 19 views
0

なぜ次の配列Javascript配列格納処理

var mensajes = [('juan', 'pedro', 'hola como andas?'), ('jorge', 'matias', 'hola! todo bien?'), ('pedro', 'matias', 'buen dia matias!!')]; 

私はそれだけで1つの値がテキスト全体を保持すると、配列ではありませんmensajes

["hola como andas?", "hola! todo bien?", "buen dia matias!!"] 

を印刷中?または()が実際に何かをしていて、()内の最後の値を保存するだけですか?私はこれを理解していない。事前に感謝します

答えて

1

()は、配列に格納したいものの最後の部分だけを格納するようにしています。

ご質問には、あなたのコードは、すべてのテキストを保持する配列ではありません。すべてのテキストを印刷する場合は、配列内のすべての()を削除する必要があります。

このよう

:あなたは特定のアレイを印刷したいが、それが全てではない場合は、これにそれを変更することができますvar mensajes = ['juan', 'pedro', 'hola como andas?', 'jorge', 'matias', 'hola! todo bien?', 'pedro', 'matias', 'buen dia matias!!'];

var mensajes = [['juan', 'pedro', 'hola como andas?'], ['jorge', 'matias', 'hola! todo bien?'], ['pedro', 'matias', 'buen dia matias!!']];

これはとてもアレイ内の配列を保持していますあなたが[juan、pedro、hola coma andas]だけを出力するconsole.log(mensajes [0])のようになると、単一の配列全体を出力できます。この場合、console.log(mensajes)を使ってすべてのテキストを一度に印刷することはできません。

この場合、最初に配列名を書き、必要な配列のインデックス値の角括弧を書きます。

希望すると便利です。

+0

これは非常に迅速な答えでした。私はプログラミングに関する質問を解決しようとしています。メッセージを誰が誰に送るのか知るために、各メッセージの最初の値を取得する必要があるので、なぜ最後の文字列を格納するのか分かります。私はvarのmensajesを変更することはできないと仮定しているので、imaは他に何かを考えます。答えをありがとう! –

+0

問題ありません。あなたのプログラミングに関する質問にお疲れ様でした!あなたが答えの一つを見つけたら、投票して最良の答えを選んでください。次回誰かがどれが良いかを知っています。 – Edwin

3

あなたの配列リテラルに括弧を使用しているので、JSインタプリタはラップされたコードを式として扱い、,はコンマ演算子になります。コンマ演算子は、そのオペランドを左から右へと評価し、最後のオペランドを返します。そのため、かっこ内のオペランドの最後の値が配列の値として設定されます。

+0

JS文法がこの無駄な生産を可能にするのは本当に奇妙です –

+0

@self実際、オペレータは独自のユースケースを持っています。それは、オペレータを意識して誤用するその特定のケースです。これをチェックする:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators#Comma_o​​perator – undefined

+0

括弧を使って式コンテキストを生成することは、短絡論理演算と三項演算を扱うときに非常に便利です。 '!! condition &&(a.push(b)、a)'と同様、 'condition'が成立すれば' b'を配列 'a'にして配列' a'を返します。そうでなければ 'a.push(b)'は 'a'の新しい長さを返すだけなので、これは必須です。 – Redu

関連する問題