如何在javascript中重新分组数组?

问题描述 投票:0回答:1

我的 javascript 中有这组数组。

var array = [
['Jack', 'A'], 
['Jack', 'A'], 
['Sara', 'A'], 
['Jack', 'B'], 
['Peter', 'B'],
['Sara', 'C'], 
['Sara', 'B'],
['Sara', 'A'],
['Sara', 'B'], 
['Peter', 'B'],
['Peter', 'A'],
['Peter', 'C']
];

我的目标是像这样排列为数组。

Jack: A : 2
Jack: B : 1
Sara: A : 2
Sara: B : 2
Sara: C : 1
Peter: A : 1
Peter: B : 2
Peter: C : 1

我正在尝试像这样编写代码,但我无法正确完成

let counts = {};
array.forEach(element => {
     counts[element] = (counts[element] || 0) + 1;
});

有人对这个有想法吗? 谢谢..

javascript arrays sorting
1个回答
0
投票

我想你想要这样的东西:

let array = [
        ['Jack', 'A'], 
        ['Jack', 'A'], 
        ['Sara', 'A'], 
        ['Jack', 'B'], 
        ['Peter', 'B'],
        ['Sara', 'C'], 
        ['Sara', 'B'],
        ['Sara', 'A'],
        ['Sara', 'B'], 
        ['Peter', 'B'],
        ['Peter', 'A'],
        ['Peter', 'C']
    ];

    function transformArray(arr)
    {
        let result = {};

        arr.forEach(function(item) {

            let name = item[0];

            let category = item[1];
    
            if (!result[name]) {
                result[name] = {};
            }
    
            if (!result[name][category]) {
                result[name][category] = 1;
            } else {
                result[name][category]++;
            }
        });
    
        return result;
    }

    console.log(transformArray(array));

© www.soinside.com 2019 - 2024. All rights reserved.