2016-02-02 97 views
1

我有一個數組的結果,其中包含對象的數量,需要分類的幫助下分類。當15個和的類別數組的值達到15時,這個數組會像下面的結果一樣被更多地分割。陣列與陣列的對象類別值的幫助分裂 - Javascript - 高圖

幫助肯定理解

陣列

[Object { name="A", categories=[2]}, Object { name="B", categories=[3]}, Object { name="C", categories=[1]}, Object { name="D", categories=[1]}, Object { name="E", categories=[1]}, Object { name="F", categories=[3]}, Object { name="G", categories=[1]}, Object { name="H", categories=[1]}, Object { name="I", categories=[1]}, Object { name="J", categories=[3]}, Object { name="K", categories=[2]}, Object { name="L", categories=[2]}, Object { name="M", categories=[2]}] 

更多細節

[{"name":"A","categories":["543","301"]},{"name":"B","categories":["100","120","390"]},{"name":"C","categories":["453"]},{"name":"D","categories":["112"]},{"name":"E","categories":["542"]},{"name":"F","categories":["534","545","547"]},{"name":"G","categories":[" 535"]},{"name":"H","categories":["390"]},{"name":"I","categories":["528"]},{"name":"J","categories":["101","492"," 320"]},{"name":"K","categories":["201","210"]},{"name":"L","categories":["102","573"]},{"name":"M","categories":["211","220"]}] 

所需的結果

[[{"name":"A","categories":["543","301"]},{"name":"B","categories":["100","120","390"]},{"name":"C","categories":["453"]},{"name":"D","categories":["112"]},{"name":"E","categories":["542"]},{"name":"F","categories":["534","545","547"]},{"name":"G","categories":[" 535"]},{"name":"H","categories":["390"]},{"name":"I","categories":["528"]},{"name":"J","categories":["101"]}],[{"name":"J","categories":["492"," 320"]},{"name":"K","categories":["201","210"]},{"name":"L","categories":["102","573"]},{"name":"M","categories":["211","220"]}]] 

這一結果部分將爲您提供關於期望的結果更多的幫助

{"name":"J","categories":["101"]}],[{"name":"J","categories":["492"," 320"]} 

回答

3

Array.prototype.reduce()的建議和臨時對象。

var array = [{ "name": "A", "categories": ["543", "301"] }, { "name": "B", "categories": ["100", "120", "390"] }, { "name": "C", "categories": ["453"] }, { "name": "D", "categories": ["112"] }, { "name": "E", "categories": ["542"] }, { "name": "F", "categories": ["534", "545", "547"] }, { "name": "G", "categories": [" 535"] }, { "name": "H", "categories": ["390"] }, { "name": "I", "categories": ["528"] }, { "name": "J", "categories": ["101", "492", "320"] }, { "name": "K", "categories": ["201", "210"] }, { "name": "L", "categories": ["102", "573"] }, { "name": "M", "categories": ["211", "220"] }], 
 
    result = array.reduce(function (r, a) { 
 
     a.categories.forEach(function (b, i) { 
 
      var o = { name: a.name, categories: [] }; 
 
      r.count++; 
 
      if (!r.refA || r.count > 15) { 
 
       r.count = 1; 
 
       r.refA = []; 
 
       r.array.push(r.refA); 
 
       i = 0; 
 
      } 
 
      if (!i) { 
 
       r.refA.push(o); 
 
       r.refB = o.categories; 
 
      } 
 
      r.refB.push(b); 
 
     }); 
 
     return r; 
 
    }, { array: [], count: 0, refA: undefined, refB: undefined }).array; 
 

 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

+0

讚賞你的回答,但我需要一個函數,返回結果是這樣的。 '{「name」:「J」,「categories」:[「101」]}],[{「name」:「J」,「categories」:[「492」,「320」]}' –

+0

它的工作現在滿足了我的要求。謝謝!你拯救我的一天 –