2017-06-20 11 views
-2

私はJavascriptを初めて使用しており、同期関数のパラメータとして文字列の配列を渡そうとしています。関数の中で、配列は1つの文字列に結合され、私はなぜそれがわからないのですか?入力は私が変更できないように構造化されています。Javascript - 配列パラメータが連結される

module.exports = { 
    myFunc: function (input) { 
     console.log(input); //"string1string2,string3" 

     var type = input[0]; 
     var val = input[1][0]; 
     console.log('type: ' + type + ', val: ' + val) 
    } 
} 


myFunc(["string1", ["string2", "string3"]]); //'type: s, val: t' 

すべての3つの文字列を連結しますinput paramが、string1string2,string3なり、'type: s, val: t'を出力します。

+0

「そのまま」とはどういう意味ですか? 'input'で連結しないでください。配列を平らにして結合し、それを返します。 'input'は依然として元の配列です。 – Li357

+3

いくつかのコードを削除しましたか?タイプミスがそれをコピーしているだけであると仮定すると( 'string2'の後)、関数は何も返しません。それが行う唯一のことは 'console.log( 'type:string1、val:string2')'です。 – samanime

+0

string2に二重引用符がありません – Isac

答えて

0
あなたがここに見ることができるようにあなたのjavascriptが正常に動作しているようだ

var myFunc = function (input) { 
 
    var type = input[0]; 
 
    var val = input[1][0]; 
 
    console.log('type: ' + type + ', val: ' + val) 
 
} 
 

 
myFunc(["string1", ["string2", "string3"]]); //'type: s, val: t'

は私がスニペット

+0

これはありません私のnodejsプログラムで私のコードがどのように働いていますか?それは '' type:s、val:t ''を出力しているので、私は質問したのです – McLovin

+0

@McLovin次に、あなたが提供したコードサンプルとそれが何をするのかが間違っています。 Isacはそれが私が前のコメントで言及したことを正確に示した。 – samanime

+0

あなたが手伝ってくれるようにもっとコードを投稿しなければならないと思います。 – Isac

0

コードでそれを実行することができるようにモジュールを削除する必要がありましたあなたが与えた例は、それがあなたが主張する出力を与えていません。

しかし、私はあなたがこのような何かを持っているかもしれない疑いがある:

お知らせ

const myFunc = function (input) { 
 
    var type = input[0]; 
 
    var val = input[1][0]; 
 
    console.log('type: ' + type + ', val: ' + val) 
 
} 
 

 

 
myFunc("string1", ["string2", "string3"]); //'type: s, val: t'
が、私はあなたの例から外側の配列を削除しました。ちょうど myFunc("string1")と呼んだら、あなたが得ようとしている出力が得られます。

私はあなたの機能が期待している配列の1つのレベルが不足していると思う。

代わりに、配列の代わりに文字列としてアクセスされています。あなたは配列に似た構文を持つ文字列の単一の文字にアクセスする方法を

const str = 'abcdef'; 
 
console.log(str[0]); 
 
console.log(str[1]); 
 
console.log(str[1][0]); 
 
console.log(str[1][1]); 
 
console.log(str[1][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]);

注意してください。しかし、他の言語とは異なり、JavaScriptでは、文字列の1文字はまだ文字列なので、実際に[0]を無限回数呼び出してもその文字を返すことができます。

+0

私はあなたの答えをありがとう。だから、これがJavascriptでは不可能なのであれば、間違いなくスクリューが起こっています。私は関数の入力時に入力のconsole.logを追加しました。私はこれを正確にどのように2次元配列で私の質問に書かれて実行しています。 – McLovin

+0

あなたはそれをあなたの考え方とは全く違うものと呼んでいないのでしょうか、あるいはあなたは何らかのファンキーな蒸散問題を起こしているかもしれません。これを純粋なJavaScriptで書いていますか?あなたはBabel、TypeScript、Coffeeなどのものを使っていますか? – samanime

+0

ファンキーな変換が行われない場合、私はほとんどあなたが 'myFunc()'に渡している値が既に混乱して連結されていることを保証します。 – samanime