首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对常用属性数组进行排序

对常用属性数组进行排序
EN

Stack Overflow用户
提问于 2012-04-09 19:31:17
回答 3查看 241关注 0票数 4

我正在努力解决一个数组问题,我确信这个问题以前已经解决过了。我能想到的最好的类比是产品比较功能,即选择2-3个产品,并列出它们的特征供用户比较。

我有2-3个特征数组。这些数组可以具有相同的特征。我需要并排显示一个数组表,其中的元素按“最常见”排序。因此,如果所有三个数组都具有相同的特征,则它将位于顶部。那么将列出两个相似的特征,依此类推。如果两个数组共享一个特征,则第三个数组将具有空白单元格。

后台是用PHP编写的。前端是Javascript。我为其他一些功能使用了下划线,所以它的数组函数是可用的。

我就是想不通我必须做的事情的组合,才能让它工作!任何帮助都是非常感谢的!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-16 18:02:17

我设法找到了一个解决方案,我认为它涵盖了这个问题,使用二级结构记录每个类别的频率,并使用此频率数组的值进行比较的自定义排序函数的建议。示例实现如下;

代码语言:javascript
复制
function getCategories(products) {
var categories = [], frequency = {};
for (var i = 0; i < products.length; i++) {
    for (var c in products[i]) {
        if (products[i].hasOwnProperty(c)) {
            if (frequency.hasOwnProperty(c)) {
                frequency[c]++;
            } else {
                categories.push(c);
                frequency[c] = 1;
            }
        }
    }
}
categories.sort(function (a,b) { return frequency[b]-frequency[a]; });
return categories;
}

这将适用于下面的一系列产品;

代码语言:javascript
复制
var products = [
    {
        cat1: 'val1',
        cat2: 'val1',
    }, {
        cat2: 'val2',
        cat3: 'val2',
    }, {
        cat2: 'val3',
        cat3: 'val3',
        cat4: 'val3',
    }
];
票数 1
EN

Stack Overflow用户

发布于 2012-04-09 20:51:46

如果我理解正确,我不确定我是这样理解的,但是如果你试图以这样一种方式对多个数组中的项进行排序,即每个数组的“特征”被排序,最共享的列在顶部,那么你可以不使用一个辅助数组来实现共享特征计数吗?因此,您将遍历第一组数组,当找到每个特征时,将为该特征递增一个计数器。

然后,当你在显示例程上时,你会有一个循环例程在数组上工作,你用它来计数特征计数?

票数 0
EN

Stack Overflow用户

发布于 2012-04-10 01:05:52

您可以合并产品中的特征以进行比较,然后遍历关键字(==“特征”),并将它们分类为三个新的数组(“共享”、“公共”和“不常见”)。

有了该数组,重新构建产品数组,为不使用的键保留空字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10072547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档