Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中基于用户的对象分组_Javascript_Node.js_Sorting_Grouping - Fatal编程技术网

Javascript中基于用户的对象分组

Javascript中基于用户的对象分组,javascript,node.js,sorting,grouping,Javascript,Node.js,Sorting,Grouping,我正试图根据用户的不同,将从数据库接收到的大量数据分组为单独的对象 我得到的数据如下所示: [ { ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35', value: 13.450980186462402, created: 2018-05-02T13:21:19.960Z }, { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b

我正试图根据用户的不同,将从数据库接收到的大量数据分组为单独的对象

我得到的数据如下所示:

[ { ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:19.960Z },
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:24.179Z },
  { ID: '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:18.249Z },
  { ID: '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:11.230Z },
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 0,
    created: 2018-05-02T11:33:34.705Z },
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:00.049Z },
  { ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:04.269Z },
  { ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:02.365Z }
]
const group = arr.reduce((acc, item) => {
  if (!acc[item.ID]) {
    acc[item.ID] = [];
  }

  acc[item.ID].push(item);
  return acc;
}, {});

const result = Object.values(group);
但我希望函数的输出按相同的ID分组,如下所示

[[{ ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:19.960Z },
{ ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:04.269Z },
  { ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:02.365Z }
],
[
  { ID: '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:18.249Z },
  { ID: '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:11.230Z }
],
[
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:24.179Z },
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 0,
    created: 2018-05-02T11:33:34.705Z },
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:00.049Z }
]]
function groupUserMood(xs, key) {
    return xs.reduce(function(rv, x) {
      (rv[x[key]] = rv[x[key]] || []).push(x);
      return rv;
    }, {});
  };
在javascript中最有效的方法是什么

我找到了一个如下所示的函数

[[{ ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:19.960Z },
{ ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:04.269Z },
  { ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:02.365Z }
],
[
  { ID: '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:18.249Z },
  { ID: '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:11.230Z }
],
[
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:24.179Z },
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 0,
    created: 2018-05-02T11:33:34.705Z },
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:00.049Z }
]]
function groupUserMood(xs, key) {
    return xs.reduce(function(rv, x) {
      (rv[x[key]] = rv[x[key]] || []).push(x);
      return rv;
    }, {});
  };
但这也会将类似的内容添加到一起,这是我不想要的。

使用.reduce按相同的ID分组,然后使用Object.values提取数组:

常量输入=[{ ID:'D4735E3A265E16EEE03F59718B9B5D03019C07D8B6C51F90DA3A66EEC13AB35', 价值:13.450980186462402, }, { ID:'5FECEB66FFC86F38D952786C6D69C79C2DBC239DD4E91B46729D73A27FB57E9', 价值:13.450980186462402, }, { ID:'6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b', 价值:13.450980186462402, }, { ID:'6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b', 价值:13.450980186462402, }, { ID:'5FECEB66FFC86F38D952786C6D69C79C2DBC239DD4E91B46729D73A27FB57E9', 值:0, }, { ID:'5FECEB66FFC86F38D952786C6D69C79C2DBC239DD4E91B46729D73A27FB57E9', 价值:13.450980186462402, }, { ID:'D4735E3A265E16EEE03F59718B9B5D03019C07D8B6C51F90DA3A66EEC13AB35', 价值:13.450980186462402, }, { ID:'D4735E3A265E16EEE03F59718B9B5D03019C07D8B6C51F90DA3A66EEC13AB35', 价值:13.450980186462402, } ]; 常量groupedInputObj=input.ReduceAcum,项=>{ 常量{ID}=项; 如果!accum[ID]accum[ID]=[]; 累计[ID].pushitem; 返回累计; }, {}; 常量输出=Object.valuesgroupedInputObj; console.logoutput 使用.reduce按相同ID分组,然后使用Object.values提取数组:

常量输入=[{ ID:'D4735E3A265E16EEE03F59718B9B5D03019C07D8B6C51F90DA3A66EEC13AB35', 价值:13.450980186462402, }, { ID:'5FECEB66FFC86F38D952786C6D69C79C2DBC239DD4E91B46729D73A27FB57E9', 价值:13.450980186462402, }, { ID:'6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b', 价值:13.450980186462402, }, { ID:'6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b', 价值:13.450980186462402, }, { ID:'5FECEB66FFC86F38D952786C6D69C79C2DBC239DD4E91B46729D73A27FB57E9', 值:0, }, { ID:'5FECEB66FFC86F38D952786C6D69C79C2DBC239DD4E91B46729D73A27FB57E9', 价值:13.450980186462402, }, { ID:'D4735E3A265E16EEE03F59718B9B5D03019C07D8B6C51F90DA3A66EEC13AB35', 价值:13.450980186462402, }, { ID:'D4735E3A265E16EEE03F59718B9B5D03019C07D8B6C51F90DA3A66EEC13AB35', 价值:13.450980186462402, } ]; 常量groupedInputObj=input.ReduceAcum,项=>{ 常量{ID}=项; 如果!accum[ID]accum[ID]=[]; 累计[ID].pushitem; 返回累计; }, {}; 常量输出=Object.valuesgroupedInputObj;
console.logoutput 您可以这样对它们进行分组:

[ { ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:19.960Z },
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:24.179Z },
  { ID: '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:18.249Z },
  { ID: '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:11.230Z },
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 0,
    created: 2018-05-02T11:33:34.705Z },
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:00.049Z },
  { ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:04.269Z },
  { ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:02.365Z }
]
const group = arr.reduce((acc, item) => {
  if (!acc[item.ID]) {
    acc[item.ID] = [];
  }

  acc[item.ID].push(item);
  return acc;
}, {});

const result = Object.values(group);

您所需的结果将在结果变量中。

您可以按如下方式对它们进行分组:

[ { ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:19.960Z },
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:24.179Z },
  { ID: '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:18.249Z },
  { ID: '6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:11.230Z },
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 0,
    created: 2018-05-02T11:33:34.705Z },
  { ID: '5feceb66ffc86f38d952786c6d696c79c2dbc239dd4e91b46729d73a27fb57e9',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:00.049Z },
  { ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:04.269Z },
  { ID: 'd4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35',
    value: 13.450980186462402,
    created: 2018-05-02T13:21:02.365Z }
]
const group = arr.reduce((acc, item) => {
  if (!acc[item.ID]) {
    acc[item.ID] = [];
  }

  acc[item.ID].push(item);
  return acc;
}, {});

const result = Object.values(group);

您所需的结果将在结果变量中。

保留中间索引的问题可以用不同的方法解决。例如,这样做:

var result = []
var keys = {}
data.forEach(function (e) {
  if (typeof keys[e.ID] === 'undefined') {
    result.push([])
    keys[e.ID] = result.length - 1
  }
  result[keys[e.ID]].push(e)
})

[]

保留中间索引的问题可以用不同的方法解决。例如,这样做:

var result = []
var keys = {}
data.forEach(function (e) {
  if (typeof keys[e.ID] === 'undefined') {
    result.push([])
    keys[e.ID] = result.length - 1
  }
  result[keys[e.ID]].push(e)
})

[]这是无效的语法。创建日期:2018-05-02T13:21:19.960Z},这是我从Firebase得到的日期。忽略数据值-这不是问题的一部分。这是无效的语法。创建日期:2018-05-02T13:21:19.960Z},这是我从Firebase得到的日期。忽略数据值-这不是问题的一部分。不幸的是,Object.values在节点6中不可用,只能从节点7及以上。。。有没有办法解决这个问题?我正在考虑执行const output=Object.keysgroupedInputObj.mapfunctionkey{return groupedInputObj[key];};但我没有让它工作…不幸的是,Object.values在节点6中不可用,只能从节点7及以上使用。。。有没有办法解决这个问题?我正在考虑执行const output=Object.keysgroupedInputObj.mapfunctionkey{return groupedInputObj[key];};但我没有做到这一点……这个解决方案实际上对我来说更有效,因为我使用的是NodeJS,并且Object.values在Node7之前不存在。谢谢这个解决方案实际上对我更有效,因为我使用NodeJS,并且Object.values在Node 7之前不存在。谢谢