2013-12-12 167 views
-1

我不知道標題是否適合我想要做的。從另一個JSON對象創建JSON對象

我有對象

array([0]: {category: "10", 
       question: "101"}, 
      [1]: {category: "10", 
       question: "102"}, 
      [2]: {category: "20", 
       question: "201"} 
    ); 

以下陣列我希望將所有的元素融入到這樣的事:

array([0]: {category: "10", {question: "101", 
           question: "102"}}, 
       category: "20", {question: "201"}}); 

我不知道這是可能的,或者,如果有另一種更好的方法來解決這個問題(也許與二維數組?),但任何幫助將非常感激。

謝謝!

對不起,缺乏信息,這裏是我如何創建我的對象數組:

var arr_sections = []; 
    var arr_questions = []; 
var jsonObj = []; 
$('.ui-sortable-nostyle').each(function(){ 
    arr_sections.push($(this).attr("sec_id"));    
}); 

// create json object with pairs category - question 
$(".sortable2").each(function(i){       
    $(this).children().each(function(j){  
     var cat = arr_sections[i]; 
     jsonObj.push({ 
      category: arr_sections[i], 
      question: $(this).attr("ques_id") 
     });  
    }); 
}); 

,並獲得對象的具有以下結構的數組:

[Object, Object, Object, Object, Object] 
    0: Object 
     category: "1052" 
     question: "3701" 
     __proto__: Object 
    1: Object 
     category: "1053" 
     question: "3702" 
     __proto__: Object 
    2: Object 
     category: "483" 
     question: "1550" 
     __proto__: Object 
    3: Object 
     category: "483" 
     question: "1548" 
     __proto__: Object 
    4: Object 
     category: "483" 
     question: "1549" 
     __proto__: Object 
    length: 5 

試圖建立我的新的數組:

for(var i = 0; i < jsonObj.length; i++){ 
     temp[jsonObj[i].category] = jsonObj[i].question; 
} 

但我不明白的所有值:

[483: "1549", 1052: "3701", 1053: "3702"] 
+1

有沒有這樣的事,作爲一個JSON對象,也有JSON格式的JavaScript對象和字符串,它們可能看起來是一樣的,但它們不是 – adeneo

+0

您向我們展示的內容沒有JavaScript或JSON語法。 – Quentin

+0

感謝澄清adeneo,這個想法是將具有共同結構的對象數組合併成一個單獨的對象或JSON字符串將每個屬性的這些不同值分組 – mIwE

回答

3

您有:

var arr = [ 
    {category: "10", question: "101"}, 
    {category: "10", question: "102"}, 
    {category: "20", question: "201"} 
]; 

你想(我想):

var arrRequired = [ 
    {category: "10", question : ["101", "102"] }, 
    {category: "20", question : ["201"] } 
]; 

我會給你:

var obj = { 
    "10" : ["101", "102"], 
    "20" : ["201"] 
}; 

要轉換你有什麼要什麼,我會給你,你可以這樣做:

var result = {}; 
arr.forEach(function(item) { 
    if (!result[item.category]) 
    result[item.category] = [item.question]; 
    else 
    result[item.category].push(item.question); 
}); 

要什麼我給你,你可以做得到你想要的東西:

var arrRequired = []; 
for (var category in result){ 
    arrRequired.push({ 'category' : category, 'question' : result[category] }); 
} 

如果這不是你想要的,那麼也許你應該更好地解釋它,使用有效的語法。

+0

好吧,這在我看來很好解釋 – FreshPro

+0

非常感謝,這正是我一直在尋找的:) – mIwE

-1

這裏是回答你問:

var object1 = JSON.parse(jsonString1); 
// Do something to object1 here. 
var jsonString2 = JSON.stringify(object1);