首页 > 解决方案 > 对象数组Js的分组元素

问题描述

几个小时以来,我一直在尝试对数组中具有相同值的元素进行分组,但我无处可去

大批:

list = [
    {id: "0", created_at: "foo1", value: "35"},
    {id: "1", created_at: "foo1", value: "26"},
    {id: "2", created_at: "foo", value: "13"},
    {id: "3", created_at: "foo1", value: "11"},
    {id: "4", created_at: "foo", value: "11"},
    {id: "5", created_at: "foo1", value: "16"},
    {id: "6", created_at: "foo", value: "26"},
    {id: "7", created_at: "foo1", value: "13"},
    {id: "8", created_at: "foo1", value: "16"}
];

我想要得到的结果是:

var result = [
    [
        {id: "0", created_at: "foo1", value: "35"}
    ],
    [
        {id: "1", created_at: "foo1", value: "26"},
        {id: "6", created_at: "foo", value: "26"}
    ],
    [
        {id: "2", created_at: "foo", value: "13"},
        {id: "7", created_at: "foo1", value: "13"}
    ],
    [
        {id: "3", created_at: "foo1", value: "11"},
        {id: "4", created_at: "foo", value: "11"}
    ],
    [
        {id: "5", created_at: "foo1", value: "16"},
        {id: "8", created_at: "foo1", value: "16"}
    ]         
];

任何想法如何得到它?提前致谢。

注意:我正在使用角度 5。

标签: javascriptarraysangulartypescript

解决方案


如果您正在考虑为此使用 Lodash,您可以使用_.groupBy以下方法:

var list = [
    {id: "0", created_at: "foo1", value: "35"},
    {id: "1", created_at: "foo1", value: "26"},
    {id: "2", created_at: "foo", value: "13"},
    {id: "3", created_at: "foo1", value: "11"},
    {id: "4", created_at: "foo", value: "11"},
    {id: "5", created_at: "foo1", value: "16"},
    {id: "6", created_at: "foo", value: "26"},
    {id: "7", created_at: "foo1", value: "13"},
    {id: "8", created_at: "foo1", value: "16"}
];

var response = _.groupBy(list, 'value');

console.log(response);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>


推荐阅读