2016-12-08 22 views
0

我期待通過question_id分隔以下對象。基本上索引所有question_id在該索引內都是相同的。如何使用jQuery使用對象內的值進一步索引對象?

Array[13] 
0 
: 
    Object 
    answer: 
    "Water leaking" 
    appliance_id: 
    16 
    created_at: 
    "2016-11-03 22:32:49" 
    id: 
    32 
    question_id: 
    40 
    updated_at: 
    "2016-11-03 22:32:49" 
    __proto__: 

Object 
1 
: 
Object 
answer: 
"Front Loading" 
appliance_id: 
16 
created_at: 
"2016-11-03 22:33:16" 
id: 
33 
question_id: 
41 
updated_at: 
"2016-11-03 22:33:16" 
__proto__: 

Object 
2 
: 
Object 
answer: 
"Yes" 
appliance_id: 
16 
created_at: 
"2016-11-03 22:33:23" 
id: 
34 
question_id: 
42 
updated_at: 
"2016-11-03 22:33:23" 
__proto__: 

Object 
3 
: 
Object 
answer: 
"No" 
appliance_id: 
16 
created_at: 
"2016-11-03 22:33:30" 
id: 
35 
question_id: 
42 
updated_at: 
"2016-11-03 22:33:30" 
__proto__: 
Object 

如何將它們分離出來分離出一個對象?

UPDATE JSON

 [ 
{"id":32,"appliance_id":16,"question_id":40,"answer":"Water leaking","created_at":"2016-11-03 22:32:49","updated_at":"2016-11-03 22:32:49"}, 

    {"id":33,"appliance_id":16,"question_id":41,"answer":"Front Loading","created_at":"2016-11-03 22:33:16","updated_at":"2016-11-03 22:33:16"}, 

    {"id":34,"appliance_id":16,"question_id":42,"answer":"Yes","created_at":"2016-11-03 22:33:23","updated_at":"2016-11-03 22:33:23"}, 

    {"id":35,"appliance_id":16,"question_id":42,"answer":"No","created_at":"2016-11-03 22:33:30","updated_at":"2016-11-03 22:33:30"}, 

    {"id":36,"appliance_id":16,"question_id":43,"answer":"Yes","created_at":"2016-11-03 22:33:38","updated_at":"2016-11-03 22:33:38"}, 

    {"id":37,"appliance_id":16,"question_id":43,"answer":"No","created_at":"2016-11-03 22:33:44","updated_at":"2016-11-03 22:33:44"}, 

    {"id":38,"appliance_id":16,"question_id":44,"answer":"Yes","created_at":"2016-11-03 22:33:53","updated_at":"2016-11-03 22:33:53"}, 

    {"id":39,"appliance_id":16,"question_id":44,"answer":"No","created_at":"2016-11-03 22:34:02","updated_at":"2016-11-03 22:34:02"}, 

    {"id":40,"appliance_id":16,"question_id":45,"answer":"Just happened","created_at":"2016-11-03 22:34:16","updated_at":"2016-11-03 22:34:16"}, 

    {"id":41,"appliance_id":16,"question_id":46,"answer":"1-3 years ago","created_at":"2016-11-03 22:34:30","updated_at":"2016-11-03 22:34:30"}, 

    {"id":42,"appliance_id":16,"question_id":47,"answer":"Yes","created_at":"2016-11-03 22:34:35","updated_at":"2016-11-03 22:34:35"}, 

    {"id":43,"appliance_id":16,"question_id":47,"answer":"No","created_at":"2016-11-03 22:34:39","updated_at":"2016-11-03 22:34:39"}, 

    {"id":44,"appliance_id":16,"question_id":46,"answer":"3-5 years ago","created_at":"2016-11-03 23:20:25","updated_at":"2016-11-03 23:20:25"} 
] 

全碼

    .done(function(response){ 

         var questions = response.questions; 
         var answers = response.answers; 
         console.log(response.questions); 
         console.log(response.answers); 
         JSON.stringify(answers); 

         var question = $.map(response.questions, function (item) { 
         return item.question; 
         }); 

         var question_id = $.map(response.questions, function (item) { 
         return item.id; 
         }); 

         console.log(question); 
         console.log(question_id); 

         var q_id = 40; 

        // console.log(question); 

         var n = $(question).length; 

         var list = []; 
         for (var i = 1; i <= n; i++) { 
          list.push(i); 
         } 



         swal.setDefaults({ 
         input: 'radio', 
         confirmButtonText: 'Next &rarr;', 
         showCancelButton: true, 
         animation: false, 
         progressSteps: list 
         }) 

        // Get range of question indexes 
         var i = 0; 
         var hi = n - 1; 

         console.log(i); 
         console.log(hi); 

         // Sweet alert- Answers radio button 
         // inputOptions can be an object or Promise 
         var inputOptions = new Promise(function (resolve) { 
         setTimeout(function() { 
          resolve({ 
          // ANSWERS TO GO IN HERE BY QUESTION 
          }) 
         }, 1000) 
         }) 

         var step = [ 
         { 
         title: '', 
         input: 'radio', 
         inputOptions: inputOptions, 

         }, 
         ] 

        var steps = question.map((title) => { 
          var clone = Object.assign({}, step); 
          clone.title = title; 
          return clone; 
         }); 

         console.log(steps); 

         swal.queue(steps).then(function (result) { 
         swal.resetDefaults() 
         swal({ 
          title: 'All done!', 
          html: 
          'Your answers: <pre>' + 
           JSON.stringify(result) + 
          '</pre>', 
          confirmButtonText: 'Lovely!', 
          showCancelButton: false 
         }) 
         }, function() { 
         swal.resetDefaults() 
         }) 

初始響應回答

enter image description here

+0

最簡單的方法是用jquery'each'遍歷並抓取匹配的對象。 – Steve

+0

然後我需要用正確的索引重新創建對象? –

+0

其中,請顯示'JSON.stringify(array)'的結果,而不是複製粘貼出控制檯窗口。另外,http://stackoverflow.com/q/30735465/215552 –

回答

1

如果你想將它們按question_id您可以使用下面的代碼:

Array.prototype.groupBy = function(groupByField) { 
    var groups = {}; 
    this.forEach(function(el) { 
     var key = el[groupByField]; 
     if (key in groups == false) { 
      groups[key] = []; 
     } 
     groups[key].push(el); 
    }); 
    return Object.keys(groups).map(function(key) { 
     return { 
      key: key, 
      values: groups[key] 
     }; 
    }); 
}; 

和使用:

var newList = list.groupBy('question_id'); 

這裏是下劃線相當於:

var newList _.groupBy(list , 'question_id'); 

UPDATE:

一旦你通過question_id分組他們,然後你的var q_id = 40;

var itemsWithSameQuestion = newList.filter(function(v) { 
    return v.key == q_id; // Filter out the appropriate one 
}) 

更新2:

不得不改變el.groupByFieldel[groupByField],最後變化v.id在過濾器v.key

查看plunkr here

+0

感謝Yaser ...試圖對此有所瞭解。 JS不是我最強的語言。如果原始對象被保存爲答案的變量。該變量將在哪裏提供答案。 –

+0

你可以使用一些包含這些代碼的代碼來更新你的問題嗎?@JamesParsons – Yaser

+0

謝謝亞瑟。我用完整的代碼更新了上述內容。正如你所看到的,我正在使用鏈接模式和快速警報。到目前爲止,我已經在標題(問題)中進行了映射。整個過程是AJAX查詢的完全響應。我正在解答所有的答案。我現在需要做的事情是將他們分組到具體問題的答案中並顯示出來。 –

相關問題