2012-06-06 64 views
1

我有json數據包含整個數據庫記錄,現在我需要執行group by這個返回json數據,並對特定類別進行排序。JSON數據組由

我認爲排序很容易做json數據,但我不知道我怎麼可以去與團隊。我需要根據特定的數據進行分組。

任何幫助/建議將是很大的幫助。

感謝 拉維

回答

1

檢查http://linqjs.codeplex.comhttp://jslinq.codeplex.com。它是模仿LINQ的JavaScript庫。這裏是像你這樣的其他問題:Javascript Dynamic Grouping

+0

感謝ü閱讀答題。 LINQ從來沒有任何意義,因爲我們正在處理室內語言。我們開發了自己的運行javascript引擎的framerwork。所以我需要在沒有任何第三方框架(即.NET)的情況下通過javascript級別來完成這個組。 – ravi

+1

@ravi - linqjs是一個純粹的javascript庫,與.net無關。它只是模仿它的linq查詢功能。 –

+0

謝謝埃利安。但我知道它在我們的開發中非常不同的方法。我正在爲桌面應用程序編寫javascript。無論如何,你知道沒有LINQ.js它有可能嗎? – ravi

2
var obj = [{ "session":"1","page":"a"}, 
     { "session":"1","page":"b"}, 
     { "session":"1","page":"c"}, 
     { "session":"2","page":"d"}, 
     { "session":"2","page":"f"}, 
     { "session":"3","page":"a"}]; 

function GroupBy(myjson,attr){ 
    var sum ={}; 

    myjson.forEach(function(obj){ 
     if (typeof sum[obj[attr]] == 'undefined') { 
     sum[obj[attr]] = 1; 
     } 
     else { 
     sum[obj[attr]]++; 
     } 
    }); 
    return sum; 
} 

var result = GroupBy(obj,"page"); 

console.log("GroupBy:"+ JSON.stringify(result)); 
/// GroupBy(obj,"session") --> GroupBy:{"1":3,"2":2,"3":1} 
/// GroupBy(obj,"page") --> GroupBy:{"a":2,"b":1,"c":1,"d":1,"f":1} 
0
var obj = [{Poz:'F1',Cap:10},{Poz:'F1',Cap:5},{Poz:'F1',Cap:5},{Poz:'F2',Cap:20},{Poz:'F1',Cap:5},{Poz:'F1',Cap:15},{Poz:'F2',Cap:5},{Poz:'F3',Cap:5},{Poz:'F4',Cap:5},{Poz:'F1',Cap:5}]; 
Array.prototype.sumUnic = function(name, sumName){ 
    var returnArr = []; 
    var obj = this; 
    for(var x = 0; x<obj.length; x++){ 
     if((function(source){ 
      if(returnArr.length == 0){ 
       return true; 
      }else{ 
       var isThere = []; 
       for(var y = 0; y<returnArr.length; y++){ 
        if(returnArr[y][name] == source[name]){ 
         returnArr[y][sumName] = parseInt(returnArr[y][sumName]) + parseInt(source[sumName]); 
         return false; 
        }else{ 
         isThere.push(source); 
        } 
       } 
       if(isThere.length>0)returnArr.push(source); 
       return false; 
      } 
     })(obj[x])){ 
      returnArr.push(obj[x]); 
     } 
    } 
    return returnArr; 
} 
obj.sumUnic('Poz','Cap'); 
// return "[{"Poz":"F1","Cap":45},{"Poz":"F2","Cap":25},{"Poz":"F3","Cap":5},{"Poz":"F4","Cap":5}]"