2017-11-14 14 views
1

サーバーから取得したjsonデータに対して特定の操作を実行してマップを返しました。私は鍵を印刷し、Maps JavaScriptを使用した解析

action = [object Map] 
comedy = [object Map] 
thriller = [object Map] 

とオブジェクトマップ(すなわち私はちょうど値を印刷するとき)に、彼らは私が期待してカウントを持っているとの値と以下のようなマップ構造が見えます。

Map { 
'spanish' => 3 
'english' => 4 
} 
Map { 
'spanish' => 1 
'english' => 2 
} 

このような方法で配列内の入れ子になったマップを変換したいと考えています。私が利用できる既存の図書館はすでにありますか?

var comedy[] = ['spanish_1', 'english_2'] 
var action[] =['spanish_3', 'english_4'] 

これは、ネストマップからデータを取得するのが難しいため、このデータを処理する理想的な方法であることをお勧めします。

答えて

1

Map.entriesを使用して地図内のアイテムを取得し、Array.fromを使用して繰り返し、希望の値を持つ新しいArrayを作成します。第二レベルのマップで、私は埋める新しいJSONオブジェクトを養うために最初のマップレベルで

{ 
    actions: [ 
    'spanish_3', 
    ... 
    ], 

    comedy: [ 
    'spanish_3', 
    ... 
    ], 
} 

Iループ:次の結果を得るために

const myNewArray = Array.from(myMap.entries(), ([ 
    key, 
    value, 
]) => `${key}_${value}`); 

EDIT

データ。

Array.from(myMap.entries()).reduce((tmp, [ 
     xKey, 
     xValue, 
    ]) => ({ 
     ...tmp, 

     [xKey]: Array.from(xValue.entries(), ([ 
     yKey, 
     yValue, 
     ]) => `${yKey}_${yValue}`), 
    }), {}); 

次の出力

[ 
    [ 
    'spanish_3', 
    ... 
    ], 

    [ 
    'spanish_3', 
    ... 
    ], 

    ... 
] 

を取得するために、ここで私は(あなたがすでに来ていたデータを知っていればdestructurationは動作します)私はdestructurationと一緒に使用することを、2次元配列を作成します。

const [ 
     action, 
     comedy, 
     thriller, 
    ] = Array.from(myMap.entries(), ([ 
     xKey, 
     xValue, 
    ]) => Array.from(xValue.entries(), ([ 
     yKey, 
     yValue, 
    ]) => `${yKey}_${yValue}`)); 

ユースケースの多くがありますが、あなたが持っているとあなたがそれで何をしたいかの情報によって決まります。すべてのサンプルが、あなたの特定のユースケースを理解するのに十分な助けとなることを願っています。 :)

+1

あなたは '[キー、値]'周りの括弧を逃しています。 – chazsolo

+0

ええ、右:)ありがとう –

+0

ちょっとGuys、上記の場合は、各キーはそれに対応するオブジェクトマップを持っているので、上記の期待どおりの値を印刷しない、私はオブジェクトマップでの内容を印刷する必要があります。私の現在の出力は次のようなものです。 Exa:['action_object Map'、 'comedy_object Map'] – thilak

0

あなたは配列に変換し、ご希望の形式にデータをマッピングすることができます

const map = new Map() 
 
map.set('spanish', 3) 
 
map.set('english', 4) 
 

 
const result = Array.from(map).map(([key, value]) => `${key}_${value}`) 
 

 
console.log(result) // ["spanish_3", "english_4"]

+0

Hey Timo、上記の場合、値が期待通りに表示されません上記の各キーはそれに対応するオブジェクトマップを持っているので、オブジェクトマップの中からのコンテンツを印刷する必要があります。私の現在の出力は次のようなものです。 Exa:['action_object Map'、 'comedy_object Map'] – thilak

関連する問題