2016-08-27 27 views
0

からのオブジェクトの配列を作成します。私は2つのプロパティを持つことになります上記のJSONからオブジェクトの配列を作成したい私は以下のようなJSONファイル持ってJSON

[ 

{"fields":{category_class":"CAT2",category_name":"A"},"pk":1 }, 

{"fields":{category_class":"CAT1",category_name":"B"},"pk":2 }, 

{"fields":{category_class":"CAT1",category_name":"C"},"pk":3 }, 

{"fields":{category_class":"CAT2",category_name":"D"},"pk":4 }, 

{"fields":{category_class":"CAT3",category_name":"E"},"pk":5 }, 

{"fields":{category_class":"CAT1",category_name":"E"},"pk":6 }, 

] 

を。 i)CategoryClass ii)CategoryNameList。たとえば:

this.CategoryClass = "CAT1" 
this.CategoryNameList = ['B','C','E'] 

は基本的に私は、そのカテゴリクラスCAT1であるなど、他のカテゴリーのクラスのすべてのカテゴリ名を選択します。私はこれを試しました:

var category = function(categoryClass, categoryNameList){ 

this.categoryClass = categoryClass; 
this.categoryList = categoryNameList; 

} 

var categories = []; 

categories.push(new category('CAT1',['B','C','E']) 

助けが必要です。

答えて

0

フィルタ方式を使用することができます。

function groupByClass(data) { 
 
    return data.reduce((acc, { fields }) => { 
 
     (acc[fields.category_class] = acc[fields.category_class] || { 
 
      categoryClass: fields.category_class, 
 
      categoryNameList: [] 
 
     }).categoryNameList.push(fields.category_name); 
 
     return acc; 
 
    }, {}); 
 
} 
 

 
// Sample data 
 
var data = [ 
 
    {"fields":{"category_class":"CAT2","category_name":"A"},"pk":1 }, 
 
    {"fields":{"category_class":"CAT1","category_name":"B"},"pk":2 }, 
 
    {"fields":{"category_class":"CAT1","category_name":"C"},"pk":3 }, 
 
    {"fields":{"category_class":"CAT2","category_name":"D"},"pk":4 }, 
 
    {"fields":{"category_class":"CAT3","category_name":"E"},"pk":5 }, 
 
    {"fields":{"category_class":"CAT1","category_name":"E"},"pk":6 }, 
 
]; 
 
// Convert 
 
var result = groupByClass(data); 
 
// Outut 
 
console.log(result); 
 
// Example look-up: 
 
console.log(result['CAT1']);

0

質問

function Select_CatName(catclass,array){ 
    var CatNameList=[] 
    $(array).each(function(){ 
    if(this.fields.category_class==catclass) 
    CatNameList.push(this.fields.category_name) 
}) 
return CatNameList; 
} 

この関数希望のカテゴリ名を返す:基本的に私は、そのカテゴリ、クラス、他のカテゴリのクラス

ソリューション用などCAT1であり、すべてのカテゴリ名を選択しますリストでは、必要なcatclassとデータの配列を渡す必要があります。この場合はJSONです。

入力:機能上

enter image description here

を呼び出す:

enter image description here

出力

enter image description here

希望します。

+0

実際にテキストであるコンテンツのイメージを含めることはお勧めしません。 – trincot

+0

@trincot ohkay !!私は次回に覚えています。 –

1

アレイ上で簡単なフィルタを使用できます。コードにエラーが発生する二重引用符がいくつかあります。しかし、CAT1でのみフィルタリングするために、あなたはそれぞれのカテゴリ名を持つオブジェクトを提供し、私はカテゴリクラスをキーオブジェクトを作成し、このES6機能を、お勧めし

var cat1 = arr.filter(value => value.fields.category_class === "CAT1"); 
関連する問題