2012-06-06 94 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}]"