如何按Json数组进行分组

时间:2015-10-10 09:14:59

标签: javascript jquery

我有一个数组,我想应用group By列(键)。 我有这个。

app.groupDtData = function(data, column) {
  var generatedData=[];
  $.each(data,function(i,dt){
    // generatedData
    // if(jQuery.inArray( "John", generatedData ))
  });
}

我必须将其推入generatedData并按jQuery.inArray检查?

1 个答案:

答案 0 :(得分:4)

您不会使用inArray因为您需要一个对象来保存结果,而不是数组。使用in运算符在对象中查找属性。

您将从该项中获取列值,然后检查结果中是否存在该值。如果它不存在,请按该名称添加新数组。将项添加到数组中,最后返回结果:

app.groupDtData = function(data, column) {
  var generatedData = {};
  $.each(data, function(i, dt) {
    var key = dt[column];
    if (!(key in generatedData)) {
      generatedData[key] = [];
    }
    generatedData[key].push(dt);
  });
  return generatedData;
};

演示:



function group(data, column) {
  var generatedData = {};
  $.each(data, function(i, dt) {
    var key = dt[column];
    if (!(key in generatedData)) {
      generatedData[key] = [];
    }
    generatedData[key].push(dt);
  });
  return generatedData;
}

var g = group([
  { name: 'John', grp: '1' },
  { name: 'Elsa', grp: '2' },
  { name: 'Mandy', grp: '2' },
  { name: 'Bo', grp: '1' }
], 'grp');

document.write(JSON.stringify(g));

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;