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,我建议将其作为一个新问题发布。