2017-09-28 19 views
0

私は名字、名字、電子メールのいずれかの配列をいくつか持っています。私は、配列の各インデックスのオブジェクトを作成したいと思います。複数の配列からオブジェクトの多次元配列を作成する

firstnames[0], lastnames[0], emails[0]

は、私は、そのオブジェクトを取得し、配列にそれを投げることになるから

{firstname: value, lastname: value, email: value}

なります。しかし、現時点では、私はこの問題に取り組む方法を見つけようと努力しています。誰かが私がこれを行うきれいな方法を考え出すのを助けることができると願っています。

+0

は、お使いのアレイには、各 'Array'の各インデックスは、インデックスによって正しい試合に対応した方法で注文していますか? –

+0

そうです。データは、最初にCSVから取得されます。このデータは、最後に接続されるDB内の特定のフィールドにマッピングされるように再配列されなければなりません。したがって、3つの配列すべてのインデックス0は、たとえば – chris

+0

のようになります。nnnnnの答えをカバーしました。また、出力例は多次元配列ではありません。それはオブジェクトの配列です。多次元配列は配列 '[1,2]、[3、4]]を直接含む配列です。 –

答えて

4

ループが必要です。ループの各反復で、現在のインデックスの各配列から値を取得します。単純なforループがわかりやすいでしょう。

以下は、array .map() methodを使用してこれを行います。これはfirstnamesを反復し、引数として.map()に渡された関数によって返される値を含む新しい配列を構築します。これの利点は、出力配列を手動で作成してオブジェクトをプッシュする必要がなく、.map()がその部分を行い、現在のスコープ内に作業変数を作成しないようにすることです。

これは、すべての配列が同じ長さであることを前提としています。

var firstnames = ['Annie', 'Ben', 'Chris'] 
 
var lastnames = ['Andrews', 'Brown', 'Carmichael'] 
 
var emails = ['[email protected]', '[email protected]', '[email protected]'] 
 

 
var output = firstnames.map(function(v, i) { 
 
    return { 
 
    firstname: v, 
 
    lastname: lastnames[i], 
 
    email: emails[i] 
 
    } 
 
}) 
 

 
console.log(output)

関連する問題