Javascript 分层抽样

Javascript 分层抽样,javascript,json,underscore.js,lodash,Javascript,Json,Underscore.js,Lodash,我有一个json数据源,如下所示: var ds=[{"id":1,"group":"A"},{"id":2,"group":"C"},{"id":3,"group":"B"},{"id":4,"group":"A"},{"id":5,"group":"C"},{"id":6,"group":"B"},{"id":7,"group":"A"},{"id":8,"group":"C"},{"id":9,"group":"B"},{"id":10,"group":"A"},{"id":11,"gro

我有一个json数据源,如下所示:

var ds=[{"id":1,"group":"A"},{"id":2,"group":"C"},{"id":3,"group":"B"},{"id":4,"group":"A"},{"id":5,"group":"C"},{"id":6,"group":"B"},{"id":7,"group":"A"},{"id":8,"group":"C"},{"id":9,"group":"B"},{"id":10,"group":"A"},{"id":11,"group":"C"}];
var output=[{"id":1,"group":"A"},{"id":7,"group":"A"},{"id":3,"group":"B"},{"id":6,"group":"B"},{id":2,"group":"C",{"id":11,"group":"C"}]

假设每个组至少有m条记录(这里m=3),我想随机选取n条(n是的,你可以用lodash非常干净地做到这一点:

var output = _(ds) //begin chaining syntax
    .groupBy("group") //split into groups
    .map(function(group) { //for each group
        return _.sample(group, n); //sample n items randomly
    })
    .flatten() //flatten array of arrays into a single array
    .value(); //end chaining syntax
差不多