我正在使用lodash的groupBy按1到10的数字值对对象进行分组。让我们将属性称为“ sort”
groupBy的结果看起来像
Blob(623853) {name: "profile.jpg", size: 623853, type: "image/jpeg"}
接下来,我使用Object.values(result)将其转换回二维数组,以双ngFor角度显示。
问题是我不确定(可以吗?)对象的顺序是否正确。 groupBy是否按最合适的顺序创建密钥?
因此,如果结果看起来像
{
1:[{sort:1,...}, ...],
2:[{sort:2,...}], ...].
...
}
在将_groupBy结果推入数组之前如何对其进行预排序?
答案 0 :(得分:0)
我也很难信任JavaScript对象的迭代顺序。我建议您使用lodash的sortBy
函数来收集不确定性。
如果我正确解释了您的问题,那么将sortBy
应用到result
对象(使用_.property
iteratee shorthand)应该会为您提供所需的2D数组结构:>
this.target_data = _.sortyBy(result, 'sort');
this.target_data
成为2D数组:第一行是sort = 1
的对象列表,下一行是sort = 2
的对象列表,等等。
请参见this快速演示。
答案 1 :(得分:0)
这在_.groupBy方法的文档中已明确定义:
创建一个由键组成的对象,这些键由通过iteratee运行collection每个元素的结果生成。 分组值的顺序取决于它们在集合中出现的顺序。每个密钥的对应值是负责生成密钥的元素数组。使用一个参数(值)调用iteratee。
如果要订购这些产品,则需要在_.orderBy
之前_.sortBy
/ _.groupBy
答案 2 :(得分:0)
由于您的键是数字,所以Object.values()
将创建一个数组,其值按原始键的数字值排序。
const data = {
3:3,
1:1,
2:2,
};
const result = Object.values(data);
console.log(result);