微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何按长度划分分组的数组对象?

如何解决如何按长度划分分组的数组对象?

我从数据库中检索到以下数据

Content-Length

第一步是按部门名称对这些数据进行分组。

var members = [
  { "name" : "a","department_id" : 1,"department_name" : "aaa" },{ "name" : "b",{ "name" : "c",{ "name" : "d",{ "name" : "e",{ "name" : "f","department_id" : 2,"department_name" : "bbb" },{ "name" : "g","department_name" : "bbb" }
];

从这个状态开始,我想进一步将对象分成每三个对象。

理想情况下,我希望按照以下方式格式化数组

var groupedMembers = _.groupBy(members,"department_name");

↓

{
  "aaa" : [
    { "name" : "a","department_name" : "aaa" }
  ],"bbb" : [
    { "name" : "f","department_name" : "bbb" }
  ]
}

我可以使用 Underscore.js 或 lodash.js 来解决这个问题吗? 如果不是太难,你可以使用其他库或纯 javascript 实现。

谢谢。

解决方法

你可以使用纯javascript来实现。

var groupedMembers = {
  "aaa" : [
    { "name" : "a","department_id" : 1,"department_name" : "aaa" },{ "name" : "b",{ "name" : "c",{ "name" : "d",{ "name" : "e","department_name" : "aaa" }
  ],"bbb" : [
    { "name" : "f","department_id" : 2,"department_name" : "bbb" },{ "name" : "g","department_name" : "bbb" }
  ]
}

var splitByThree = {}

for (const key in groupedMembers) {
  if (groupedMembers[key].length <= 3) {
    splitByThree[key] = groupedMembers[key]
  }
  else {
    for (var i=0,j=groupedMembers[key].length; i<j; i+=3) {
      splitByThree[key + (i+3)/3] = groupedMembers[key].slice(i,i+3);
    }
  }
}

那么 splitByThree 就是您的预期结果。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。