Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 如何使用groupBy函数输出数组_Javascript_Arrays_Sorting_Grouping - Fatal编程技术网

Javascript 如何使用groupBy函数输出数组

Javascript 如何使用groupBy函数输出数组,javascript,arrays,sorting,grouping,Javascript,Arrays,Sorting,Grouping,我正在使用标准的groupBy函数,通过返回[hash]而不是hash进行修改。这将返回一个对象数组 如何改为输出数组的数组 标准groupBy功能 function groupBy(array, property) { var hash = {}; for (var i = 0; i < array.length; i++) { if (!hash[array[i][property]]) hash[array[i][property]] = []; hash[a

我正在使用标准的
groupBy
函数,通过返回
[hash]
而不是
hash
进行修改。这将返回一个对象数组

如何改为输出数组的数组

标准
groupBy
功能

function groupBy(array, property) {
  var hash = {};
  for (var i = 0; i < array.length; i++) {
    if (!hash[array[i][property]]) hash[array[i][property]] = [];
    hash[array[i][property]].push(array[i]);
  }
  return [hash];
}
所需输出

[{key1:[array]}, {key2:[array]}, {key3:[array]}]
[[array1], [array2], [array3]]
最后,我希望在数组的输出上运行for-each,以传递到另一个函数中

比如说,

let group = groupItemBy(cart, 'id');
console.log(group.length); // should be greater than 1 for multiple indexes

假设返回的是
散列
而不是
[hash]
,只需获取对象值:

 Object.values(groupItemBy(cart, 'carrierId'))
或者,并行构建哈希表和结果:

 function group(array, key){
   const hash = {}, result = [];

   for(const obj of array){
     if(hash[ obj[key] ]){
       hash[ obj[key] ].push(obj);
     } else {
       result.push( hash[ obj[key] ] = [obj]);
    }
  }

  return result;
}

假设返回的是
散列
而不是
[hash]
,只需获取对象值:

 Object.values(groupItemBy(cart, 'carrierId'))
或者,并行构建哈希表和结果:

 function group(array, key){
   const hash = {}, result = [];

   for(const obj of array){
     if(hash[ obj[key] ]){
       hash[ obj[key] ].push(obj);
     } else {
       result.push( hash[ obj[key] ] = [obj]);
    }
  }

  return result;
}
而不是

return [hash];
做:

而不是

return [hash];
做:



所需的输出无效。请核对一下,你是什么意思?你能说得更具体些吗?
[key2:
是无效的JavaScript语法。您需要一个带有命名键的普通对象或一个数组。您不能有一半。您的
键和
数组之间用
分隔:
无效。好的。谢谢。我更新了这个问题。您想要的输出无效。请检查。您的意思是什么?您能说得更多吗特定的?
[key2:
是无效的JavaScript语法。您需要一个带有命名键的普通对象或一个数组。您不能有一半。您的
键和
数组之间用
分隔:
无效。好的。谢谢。我更新了这个问题。我认为OP函数返回了一个数组。我看不出它们之间的区别记录
Object.values(groupItemBy(cart,'carrierId'))
…不确定它是否会导致问题,但我实际上是按
值进行排序
,所以当我返回
散列
并记录
对象时…
所有内容都被放在一个数组中。@kvna按值排序是什么意思?请看一下这个小提琴好吗?我认为OP函数返回了我没有看到日志记录
Object.value(groupItemBy(cart,'carrierId'))之间的区别
…不确定它是否引起了问题,但我实际上是按
值进行排序
,所以当我返回
散列
并记录
对象时…
所有内容都放在一个数组中。@kvna按值排序是什么意思?请看一下这个小提琴好吗?我不确定如何将它放到一个数组中处理嵌套数据。请参阅:这确实是一个不同的问题,因为该属性不存在于对象中,而是存在于嵌套对象中。这也意味着您需要更好地定义函数参数,以便清楚该属性的位置。如果您无法使其按预期工作,我建议将其作为一个新属性发布问题。我不确定如何使用嵌套数据。请参阅:这确实是一个不同的问题,因为该属性不存在于对象中,而是存在于嵌套对象中。这也意味着您需要更好地定义函数参数,以便清楚此属性的位置。如果您无法使其在运行时正常工作,请ct,我建议将其作为一个新问题发布。