javascript - 如何根据共同值对数组进行分组?

标签 javascript

我的数据结构如下:

a : { active: true, key: "first", page: 1 },
b : { active: true, key: "second", page: 1 },
c : { active: true, key: "third", page: 2 },
d : { active: true , key: "fourth", page: 2 },
e : { active: false , key: "fifth", page: 3 },

根据这些数据,首先我需要找到事件状态为 true 的数据,然后我需要创建一个包含具有相同页码的子数组的新数组。我需要这样的东西。

[
    ["first", "second"],
    ["third", "fourth"],
    ["fifth"]
]

我尝试过的是:

let myArray = Object.entries(dashboardKeyConfiguration).filter(x => x[1]["active"]);

var groups = [];
        for (var i = 0; i < myArray.length; i++) {
            var groupName = myArray[i][1]["page"];
            if (!groups[groupName]) {
                groups[groupName] = [];
            }
            groups[groupName].push(myArray[i][1]["key"]);
        }
        myArray = [];
        console.log(groups);

它插入空作为第一项,如下所示:

(3) [empty, Array(2), Array(2)]

最佳答案

我们可以定义我们可以拥有的pageLength最大页数。然后我们可以从 i 循环到 pageLength 并搜索该页面的对象并将其插入临时数组中。一旦特定页面的循环完成,就会将临时数组推送到主数组

const obj = {
        a : { active: true, key: "first", page: 1 },
        b : { active: true, key: "second", page: 1 },
        c : { active: true, key: "third", page: 2 },
        d : { active: true , key: "fourth", page: 2 },
        e : { active: false , key: "fifth", page: 3 },
        }
        let pageLength = 3;
        let array = [] ;
        
        for(let i = 1;i<=pageLength;i++){  
            temp = [];   
            for (var key in obj) {
                if (obj.hasOwnProperty(key)) {
                    let value = obj[key].key;
                    let page = obj[key].page;
                    if(page == i){    
                        temp.push(value);
                    } 
                }
            }
            array.push(temp) 
        }
        
        console.log(array)

这只是一个原始逻辑。请记住,此操作的复杂性可能很高,您可以用更好的方式来完成。

关于javascript - 如何根据共同值对数组进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55134205/

相关文章:

javascript - 检测单页应用程序中是否加载了所有内容

javascript - ACH Stripe 银行账户验证

javascript - 用户点击按钮时更新时间

javascript - Jquery - 使用 jquery 从文本中检测并获取 url

javascript - 将数据设置为对象属性

javascript - angularjs ng-选项不起作用

javascript - Chrome 应用无法最大化

php - 我如何限制用户访问我的网站,而不是有许多分支机构的办公室

javascript - 共享变量的问题

javascript - jQuery 验证插件在 ajax post 数据中不起作用