2017-12-19 44 views
0

2つのコレクションからの出力を使用して文字列をアセンブルしようとしています。これを行うために、_forEach関数を使用してそれらのいずれかを反復し、その出力を別のイテレータの入力として使用します。しかし、私はそれを動作させることはできません。コレクションのネストされた反復

コード:

const data1 = [{ 
     label: 'Id', 
     data: 'id' 
     }, 
     { 
     label: 'First name', 
     data: 'first_name' 
     }, 
     { 
     label: 'Last name', 
     data: 'last_name' 
     }, 
     { 
     label: 'IP Address', 
     data: 'ip_address' 
     }, 
    ]; 

const data2 = [{ 
    "id": 1, 
    "first_name": "Robinet", 
    "last_name": "Golsby", 
    "ip_address": "201.83.127.236" 
}, { 
    "id": 2, 
    "first_name": "Kirby", 
    "last_name": "Feaver", 
    "ip_address": "143.188.49.149" 
}] 

let keys = ''; 
const getKeys = _.forEach(data1, value => keys += '' +value.data); 

let stringValue = ''; 
const getStringValue = _.forEach(tableData, value => stringValue += ' ' + value.first_name); 

だから私は、最初のオブジェクトからキーのリストを取得することができますし、私は2番目の値のリストを取得することができますが、キーがハードコードされている場合のみ。私がしたいのは、 'outer'イテレータのdata2の各エントリを反復し、反復を使ってdata1以上の値を取得するためのキーを提供することです。それ、どうやったら出来るの?

編集:最終的な結果は次のようになります。

1 Robinet Golsby 201.83.127.236

+3

要求された結果の例を追加してください。 –

答えて

0

のように思える:

const result = _.chain(data1) 
    .map('data') // get keys from data1 
    .thru(keys => _.map(data2, item => _.at(item, keys))) // iterate data2 and get values by keys 
    .map(values => _.join(values, ' ')) // values array to string 
    .value(); 

結果:

["1 Robinet Golsby 201.83.127.236", "2 Kirby Feaver 143.188.49.149"] 
0

私は、これは正確に何をしたいですかどうかわからないんだけど、私はあなたがネスティングArray#map呼び出しを使用して、あなたの目標を達成することができると思います。

const data1 = [{"label":"Id","data":"id"},{"label":"First name","data":"first_name"},{"label":"Last name","data":"last_name"},{"label":"IP Address","data":"ip_address"}]; 
 
const data2 = [{"id":1,"first_name":"Robinet","last_name":"Golsby","ip_address":"201.83.127.236"},{"id":2,"first_name":"Kirby","last_name":"Feaver","ip_address":"143.188.49.149"}]; 
 

 
const result = data2.map((obj) => data1.map(({ label, data }) => ({ 
 
    label, 
 
    data: obj[data] 
 
}))); 
 

 
console.log(result);

関連する問題