2016-08-27 37 views
0

創建對象的陣列我有一個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 }, 

] 

我想創建從上述JSON這將有兩個屬性的對象的陣列。 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

我建議這個ES6功能,它創建的分類等級鍵入一個對象,提供與類別名稱對象的每個:

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

問題:基本上我想選擇所有的類別名稱,其類別類CAT1等其他類別類

解決方案

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

這個函數返回所需的類別名稱列表中,您需要傳遞所需的catclass和數據數組,因爲在這種情況下,它是您的JSON。

輸入

enter image description here

以上函數調用

enter image description here

輸出

enter image description here

希望它有幫助。

+0

最好不要包含真正爲文本的內容的圖像。 – trincot

+0

@trincot ohkay !!我會記得下次。 –

1

您可以在陣列上使用簡單的過濾器。你有幾個雙引號會導致你的代碼出錯。但只與CAT1過濾器,你可以使用過濾方法

var cat1 = arr.filter(value => value.fields.category_class === "CAT1");