2017-06-01 12 views
-1

私はES6を初めて使用しているので、正しい方法でこれを行うかどうかはわかりません。ES6でJSONデータをフィルタする方法

私は投稿のJSONオブジェクトを持っています。

{ 
    "title": "title one", 
    "category": ["dogs","cats","pets"] 
}, 
{ 
    "title": "title two", 
    "category": ["gold fish", "pets"] 
} 

私は

["dogs","cats","gold fish", "pets"] 
+3

でこれを行うことができます "私は記事のJSONオブジェクトを持っている" - それはJSONオブジェクトではありません。それはただ無効です。 – Quentin

+0

javascript .map()関数 –

+2

「正しい方法でこれを実行しようとしているかどうかわかりません」 - 現時点では何も起こっていません。 – Quentin

答えて

3

カテゴリのすべての項目を減らし、一意の値にセットを使用できます。次に、セットの配列をレンダリングします。使用

方法:連結アレイの

var array = [{ title: "title one", category: ["dogs", "cats", "pets"] }, { title: "title two", category: ["gold fish", "pets"] }], 
 
    categories = [...new Set(array.reduce((r, a) => r.concat(a.category), []))]; 
 

 
console.log(categories);

+0

多くのあなたの答えに 'Set'が大好きです。 – vsync

+0

はい、' Set'はユニークな値には非常に便利です。 –

+0

は、それぞれのステップの出力を見るのがいいでしょう。 – vsync

0

使用Array.prototype.mapポストからすべてのカテゴリが各ポストの上にマッピングし、各カテゴリを取得するために取得したいと思います。

let categories = posts.map((p) => p.category) 

これは、あなたがそれらのオブジェクトの両方のcategoryプロパティで"pets"を持っているので、あなたは、値を複製し得る可能性があります。重複するインスタンスを除外するには、Array.prototype.filterを使用します。

0

これはJSONオブジェクトの配列であると仮定すると:プロジェクトするためにマップ()関数を使用することができ

var myArray = [{ 
 
    "title": "title one", 
 
    "category": ["dogs", "cats", "pets"] 
 
    }, 
 
    { 
 
    "title": "title two", 
 
    "category": ["gold fish", "pets"] 
 
    } 
 
]; 
 

 
var newArray = myArray.map(function(x) { 
 
    return x.category; 
 
}); 
 

 
alert(newArray);

あなたが必要とするもの、あなたの場合のタイトル:

+0

"それがJSON配列だと仮定した" - あなたがそれを仮定しようとするなら、なぜあなたのコードはそれから始まっていないのですか? – Quentin

+0

なぜですか? 'myArray'を参照してください –

+0

これはJSON配列ではなくJavaScript配列です。 – Quentin

1

あなたがmap()方法とSetと拡散構文...

var data = [{"title":"title one","category":["dogs","cats","pets"]},{"title":"title two","category":["gold fish","pets"]}] 
 

 
var result = [...new Set([].concat(...data.map(e => e.category)))] 
 
console.log(result)

+0

非常に優雅なソリューション – vsync

+0

@vsyncありがとうございました。 –

+0

私はこれがJS世界での神聖な詩と同等だと言っています:) – vsync

関連する問題